<html>
<head>
<title>EAGLE 帮助 V6.5.0</title>
<style type="text/css"><!-- h1 { background-color: #CCCCCC; color: #0050B0; } pre { background-color: #EEEEEE; } mb { font-weight: bold; font-family: courier; background-color: #EEEEEE; }--></style>
</head>
<body>
<table width=100% cellspacing=0 border=0><tr>
<td align=left>EAGLE 帮助 V6.5.0</td>
<td align=right><font size=-1>
<i>Copyright &copy; 2013 CadSoft Computer GmbH</i>
</font></td></tr></table>

<h1>索引</h1>
<ul>
<li><a href=#1>常规性帮助</a>
<li><a href=#2>配置 EAGLE</a>
<li><a href=#3>命令行选项</a>
<li><a href=#4>简介</a>
<ul>
<li><a href=#5>控制面板及编辑器窗口</a>
<li><a href=#6>输入参数和值</a>
<li><a href=#7>绘制原理图</a>
<li><a href=#8>检查原理图</a>
<li><a href=#9>从原理图生成 PCB 图</a>
<li><a href=#10>检查布局</a>
<li><a href=#11>建立库元件</a>
</ul>
<li><a href=#12>控制面板</a>
<ul>
<li><a href=#13>右键菜单</a>
<li><a href=#14>目录</a>
<li><a href=#15>备份</a>
<li><a href=#16>用户界面</a>
<li><a href=#17>窗口位置</a>
<li><a href=#18>检查更新</a>
</ul>
<li><a href=#19>键盘及鼠标</a>
<ul>
<li><a href=#20>在密集区域中选择对象</a>
</ul>
<li><a href=#21>编辑器窗口</a>
<ul>
<li><a href=#22>元件库编辑器</a>
<ul>
<li><a href=#23>编辑元件库对象</a>
</ul>
<li><a href=#24>电路板编辑器</a>
<li><a href=#25>原理图编辑器</a>
<li><a href=#26>文本编辑器</a>
</ul>
<li><a href=#27>编辑器命令</a>
<ul>
<li><a href=#28>命令语法</a>
<li><a href=#29>ADD</a>
<li><a href=#30>ARC</a>
<li><a href=#31>ASSIGN</a>
<li><a href=#32>ATTRIBUTE</a>
<li><a href=#33>AUTO</a>
<li><a href=#34>BOARD</a>
<li><a href=#35>BUS</a>
<li><a href=#36>CHANGE</a>
<li><a href=#37>CIRCLE</a>
<li><a href=#38>CLASS</a>
<li><a href=#39>CLOSE</a>
<li><a href=#40>CONNECT</a>
<li><a href=#41>COPY</a>
<li><a href=#42>CUT</a>
<li><a href=#43>DELETE</a>
<li><a href=#44>DESCRIPTION</a>
<li><a href=#45>DIMENSION</a>
<li><a href=#46>DISPLAY</a>
<li><a href=#47>DRC</a>
<li><a href=#48>EDIT</a>
<li><a href=#49>ERC</a>
<li><a href=#50>ERRORS</a>
<li><a href=#51>EXPORT</a>
<li><a href=#52>FRAME</a>
<li><a href=#53>GATESWAP</a>
<li><a href=#54>GRID</a>
<li><a href=#55>GROUP</a>
<li><a href=#56>HELP</a>
<li><a href=#57>HOLE</a>
<li><a href=#58>INFO</a>
<li><a href=#59>INVOKE</a>
<li><a href=#60>JUNCTION</a>
<li><a href=#61>LABEL</a>
<li><a href=#62>LAYER</a>
<li><a href=#63>LOCK</a>
<li><a href=#64>MARK</a>
<li><a href=#65>MEANDER</a>
<li><a href=#66>MENU</a>
<li><a href=#67>MIRROR</a>
<li><a href=#68>MITER</a>
<li><a href=#69>MOVE</a>
<li><a href=#70>NAME</a>
<li><a href=#71>NET</a>
<li><a href=#72>OPEN</a>
<li><a href=#73>OPTIMIZE</a>
<li><a href=#74>PACKAGE</a>
<li><a href=#75>PAD</a>
<li><a href=#76>PASTE</a>
<li><a href=#77>PIN</a>
<li><a href=#78>PINSWAP</a>
<li><a href=#79>POLYGON</a>
<li><a href=#80>PREFIX</a>
<li><a href=#81>PRINT</a>
<li><a href=#82>QUIT</a>
<li><a href=#83>RATSNEST</a>
<li><a href=#84>RECT</a>
<li><a href=#85>REDO</a>
<li><a href=#86>REMOVE</a>
<li><a href=#87>RENAME</a>
<li><a href=#88>REPLACE</a>
<li><a href=#89>RIPUP</a>
<li><a href=#90>ROTATE</a>
<li><a href=#91>ROUTE</a>
<li><a href=#92>RUN</a>
<li><a href=#93>SCRIPT</a>
<li><a href=#94>SET</a>
<li><a href=#95>SHOW</a>
<li><a href=#96>SIGNAL</a>
<li><a href=#97>SMASH</a>
<li><a href=#98>SMD</a>
<li><a href=#99>SPLIT</a>
<li><a href=#100>TECHNOLOGY</a>
<li><a href=#101>TEXT</a>
<li><a href=#102>UNDO</a>
<li><a href=#103>UPDATE</a>
<li><a href=#104>USE</a>
<li><a href=#105>VALUE</a>
<li><a href=#106>VARIANT</a>
<li><a href=#107>VIA</a>
<li><a href=#108>WINDOW</a>
<li><a href=#109>WIRE</a>
<li><a href=#110>WRITE</a>
</ul>
<li><a href=#111>产生输出</a>
<ul>
<li><a href=#112>打印</a>
<ul>
<li><a href=#113>打印绘图</a>
<li><a href=#114>打印文本</a>
<li><a href=#115>打印机页面设置</a>
</ul>
<li><a href=#116>CAM 处理器</a>
<ul>
<li><a href=#117>CAM 主菜单</a>
<li><a href=#118>CAM 处理器作业</a>
<li><a href=#119>输出设备</a>
<ul>
<li><a href=#120>设备参数</a>
<ul>
<li><a href=#121>Aperture Wheel 文件</a>
<li><a href=#122>Aperture Emulation</a>
<li><a href=#123>Aperture Tolerances</a>
<li><a href=#124>Drill Rack 文件</a>
<li><a href=#125>Drill Tolerances</a>
<li><a href=#126>Offset</a>
<li><a href=#127>可打印区域</a>
<li><a href=#128>Pen Data</a>
</ul>
<li><a href=#129>定义您自己的设备驱动</a>
</ul>
<li><a href=#130>输出文件</a>
<li><a href=#131>标志选项s</a>
<li><a href=#132>层与颜色</a>
</ul>
<li><a href=#133>Outlines data</a>
</ul>
<li><a href=#134>自动布线器</a>
<li><a href=#135>设计检查</a>
<ul>
<li><a href=#136>设计规则</a>
</ul>
<li><a href=#137>对比参考</a>
<ul>
<li><a href=#138>对比参考标签</a>
<li><a href=#139>零件的对比参考</a>
<li><a href=#140>Contact 对比参考</a>
</ul>
<li><a href=#141>用户语言</a>
<ul>
<li><a href=#142>编写 ULP</a>
<li><a href=#143>执行 ULP</a>
<li><a href=#144>语法</a>
<ul>
<li><a href=#145>空白字符</a>
<li><a href=#146>注释</a>
<li><a href=#147>指令</a>
<ul>
<li><a href=#148>#include</a>
<li><a href=#149>#require</a>
<li><a href=#150>#usage</a>
</ul>
<li><a href=#151>关键字</a>
<li><a href=#152>标识符</a>
<li><a href=#153>常量</a>
<ul>
<li><a href=#154>字符常量</a>
<li><a href=#155>整数常量</a>
<li><a href=#156>实数常量</a>
<li><a href=#157>字符串常量</a>
<li><a href=#158>转义序列</a>
</ul>
<li><a href=#159>标点符号</a>
<ul>
<li><a href=#160>方括号</a>
<li><a href=#161>圆括号</a>
<li><a href=#162>大括号（花括号）</a>
<li><a href=#163>逗号</a>
<li><a href=#164>分号</a>
<li><a href=#165>冒号</a>
<li><a href=#166>等号</a>
</ul>
</ul>
<li><a href=#167>数据类型</a>
<ul>
<li><a href=#168>字符</a>
<li><a href=#169>整数</a>
<li><a href=#170>实数</a>
<li><a href=#171>字符串</a>
<li><a href=#172>类型转换</a>
<li><a href=#173>强制类型转换</a>
</ul>
<li><a href=#174>对象类型</a>
<ul>
<li><a href=#175>UL_ARC</a>
<li><a href=#176>UL_AREA</a>
<li><a href=#177>UL_ATTRIBUTE</a>
<li><a href=#178>UL_BOARD</a>
<li><a href=#179>UL_BUS</a>
<li><a href=#180>UL_CIRCLE</a>
<li><a href=#181>UL_CLASS</a>
<li><a href=#182>UL_CONTACT</a>
<li><a href=#183>UL_CONTACTREF</a>
<li><a href=#184>UL_DEVICE</a>
<li><a href=#185>UL_DEVICESET</a>
<li><a href=#186>UL_DIMENSION</a>
<li><a href=#187>UL_ELEMENT</a>
<li><a href=#188>UL_FRAME</a>
<li><a href=#189>UL_GATE</a>
<li><a href=#190>UL_GRID</a>
<li><a href=#191>UL_HOLE</a>
<li><a href=#192>UL_INSTANCE</a>
<li><a href=#193>UL_JUNCTION</a>
<li><a href=#194>UL_LABEL</a>
<li><a href=#195>UL_LAYER</a>
<li><a href=#196>UL_LIBRARY</a>
<li><a href=#197>UL_NET</a>
<li><a href=#198>UL_PACKAGE</a>
<li><a href=#199>UL_PAD</a>
<li><a href=#200>UL_PART</a>
<li><a href=#201>UL_PIN</a>
<li><a href=#202>UL_PINREF</a>
<li><a href=#203>UL_POLYGON</a>
<li><a href=#204>UL_RECTANGLE</a>
<li><a href=#205>UL_SCHEMATIC</a>
<li><a href=#206>UL_SEGMENT</a>
<li><a href=#207>UL_SHEET</a>
<li><a href=#208>UL_SIGNAL</a>
<li><a href=#209>UL_SMD</a>
<li><a href=#210>UL_SYMBOL</a>
<li><a href=#211>UL_TEXT</a>
<li><a href=#212>UL_VARIANTDEF</a>
<li><a href=#213>UL_VARIANT</a>
<li><a href=#214>UL_VIA</a>
<li><a href=#215>UL_WIRE</a>
</ul>
<li><a href=#216>定义</a>
<ul>
<li><a href=#217>常量的定义</a>
<li><a href=#218>变量的定义</a>
<li><a href=#219>函数的定义</a>
</ul>
<li><a href=#220>运算符</a>
<ul>
<li><a href=#221>位运算符</a>
<li><a href=#222>逻辑运算符</a>
<li><a href=#223>比较运算符</a>
<li><a href=#224>评估运算符</a>
<li><a href=#225>算术运算符</a>
<li><a href=#226>字符串运算符</a>
</ul>
<li><a href=#227>表达式</a>
<ul>
<li><a href=#228>算术表达式</a>
<li><a href=#229>赋值表达式</a>
<li><a href=#230>字符串表达式</a>
<li><a href=#231>逗号表达式</a>
<li><a href=#232>条件表达式</a>
<li><a href=#233>函数调用</a>
</ul>
<li><a href=#234>语句</a>
<ul>
<li><a href=#235>复合语句</a>
<li><a href=#236>表达式语句</a>
<li><a href=#237>控制语句</a>
<ul>
<li><a href=#238>break</a>
<li><a href=#239>continue</a>
<li><a href=#240>do...while</a>
<li><a href=#241>for</a>
<li><a href=#242>if...else</a>
<li><a href=#243>return</a>
<li><a href=#244>switch</a>
<li><a href=#245>while</a>
</ul>
</ul>
<li><a href=#246>内建</a>
<ul>
<li><a href=#247>内建常量</a>
<li><a href=#248>内建变量</a>
<li><a href=#249>内建函数</a>
<ul>
<li><a href=#250>字符函数</a>
<ul>
<li><a href=#251>is...()</a>
<li><a href=#252>to...()</a>
</ul>
<li><a href=#253>文件操作函数</a>
<ul>
<li><a href=#254>fileerror()</a>
<li><a href=#255>fileglob()</a>
<li><a href=#256>文件名称函数</a>
<li><a href=#257>文件数据函数</a>
<li><a href=#258>文件输入函数</a>
<ul>
<li><a href=#259>fileread()</a>
</ul>
</ul>
<li><a href=#260>数学函数</a>
<ul>
<li><a href=#261>绝对值，最大及最小函数</a>
<li><a href=#262>取整函数</a>
<li><a href=#263>三角函数</a>
<li><a href=#264>指数函数</a>
</ul>
<li><a href=#265>杂项函数</a>
<ul>
<li><a href=#266>配置参数</a>
<li><a href=#267>country()</a>
<li><a href=#268>exit()</a>
<li><a href=#269>fdlsignature()</a>
<li><a href=#270>language()</a>
<li><a href=#271>lookup()</a>
<li><a href=#272>palette()</a>
<li><a href=#273>sort()</a>
<li><a href=#274>status()</a>
<li><a href=#275>system()</a>
<li><a href=#276>单位转换</a>
</ul>
<li><a href=#277>网络函数</a>
<ul>
<li><a href=#278>neterror()</a>
<li><a href=#279>netget()</a>
<li><a href=#280>netpost()</a>
</ul>
<li><a href=#281>打印函数</a>
<ul>
<li><a href=#282>printf()</a>
<li><a href=#283>sprintf()</a>
</ul>
<li><a href=#284>字符串函数</a>
<ul>
<li><a href=#285>strchr()</a>
<li><a href=#286>strjoin()</a>
<li><a href=#287>strlen()</a>
<li><a href=#288>strlwr()</a>
<li><a href=#289>strrchr()</a>
<li><a href=#290>strrstr()</a>
<li><a href=#291>strsplit()</a>
<li><a href=#292>strstr()</a>
<li><a href=#293>strsub()</a>
<li><a href=#294>strtod()</a>
<li><a href=#295>strtol()</a>
<li><a href=#296>strupr()</a>
<li><a href=#297>strxstr()</a>
</ul>
<li><a href=#298>时间函数</a>
<ul>
<li><a href=#299>time()</a>
<li><a href=#300>timems()</a>
<li><a href=#301>时间转换</a>
</ul>
<li><a href=#302>对象函数</a>
<ul>
<li><a href=#303>clrgroup()</a>
<li><a href=#304>ingroup()</a>
<li><a href=#305>setgroup()</a>
<li><a href=#306>setvariant()</a>
<li><a href=#307>variant()</a>
</ul>
<li><a href=#308>XML 函数</a>
<ul>
<li><a href=#309>xmlattribute(), xmlattributes()</a>
<li><a href=#310>xmlelement(), xmlelements()</a>
<li><a href=#311>xmltags()</a>
<li><a href=#312>xmltext()</a>
</ul>
</ul>
<li><a href=#313>内建的语句</a>
<ul>
<li><a href=#314>board()</a>
<li><a href=#315>deviceset()</a>
<li><a href=#316>library()</a>
<li><a href=#317>output()</a>
<li><a href=#318>package()</a>
<li><a href=#319>schematic()</a>
<li><a href=#320>sheet()</a>
<li><a href=#321>symbol()</a>
</ul>
</ul>
<li><a href=#322>对话框</a>
<ul>
<li><a href=#323>预定义的对话框</a>
<ul>
<li><a href=#324>dlgDirectory()</a>
<li><a href=#325>dlgFileOpen(), dlgFileSave()</a>
<li><a href=#326>dlgMessageBox()</a>
</ul>
<li><a href=#327>对话框对象</a>
<ul>
<li><a href=#328>dlgCell</a>
<li><a href=#329>dlgCheckBox</a>
<li><a href=#330>dlgComboBox</a>
<li><a href=#331>dlgDialog</a>
<li><a href=#332>dlgGridLayout</a>
<li><a href=#333>dlgGroup</a>
<li><a href=#334>dlgHBoxLayout</a>
<li><a href=#335>dlgIntEdit</a>
<li><a href=#336>dlgLabel</a>
<li><a href=#337>dlgListBox</a>
<li><a href=#338>dlgListView</a>
<li><a href=#339>dlgPushButton</a>
<li><a href=#340>dlgRadioButton</a>
<li><a href=#341>dlgRealEdit</a>
<li><a href=#342>dlgSpacing</a>
<li><a href=#343>dlgSpinBox</a>
<li><a href=#344>dlgStretch</a>
<li><a href=#345>dlgStringEdit</a>
<li><a href=#346>dlgTabPage</a>
<li><a href=#347>dlgTabWidget</a>
<li><a href=#348>dlgTextEdit</a>
<li><a href=#349>dlgTextView</a>
<li><a href=#350>dlgVBoxLayout</a>
</ul>
<li><a href=#351>布局信息</a>
<li><a href=#352>对话框函数</a>
<ul>
<li><a href=#353>dlgAccept()</a>
<li><a href=#354>dlgRedisplay()</a>
<li><a href=#355>dlgReset()</a>
<li><a href=#356>dlgReject()</a>
<li><a href=#357>dlgSelectionChanged()</a>
</ul>
<li><a href=#358>转义字符</a>
<li><a href=#359>一个完整的例子</a>
</ul>
<li><a href=#360>支持的 HTML 标签</a>
</ul>
<li><a href=#361>自动备份</a>
<li><a href=#362>正&amp;反向编序</a>
<ul>
<li><a href=#363>一致性检查</a>
<li><a href=#364>限制</a>
</ul>
<li><a href=#365>技术支持</a>
<li><a href=#366>许可</a>
<ul>
<li><a href=#367>EAGLE 许可</a>
<li><a href=#368>EAGLE 发布</a>
</ul>
</ul>
<ul>
<li><a href=#369>关于中文翻译</a>
</ul>


<a name=1>
<h1>常规性帮助</h1>
当处于 <a href=#24>PCB 图</a>、<a href=#25>原理图</a>，或<a href=#22>元件库</a>编辑器窗口内时，按 F1 或者输入命令 <tt>HELP</tt> 可以为当前激活的命令打开帮助页。
<p>
您也可以输入
<pre>
HELP command
</pre>
显示编辑器命令的帮助页。比如说用 <tt>MOVE</tt> 替换 "command"，会显示 MOVE 命令的帮助页。
<p>
其它任何地方，按 F1 将出现菜单、对话框，或当前激活的动作相关的帮助页。
<p>
对于有关如何开始使用 EAGLE 的详细信息，请阅读以下帮助页:
<ul>
<li><a href=#4>简介</a>
<li><a href=#2>配置 EAGLE</a>
<li><a href=#3>命令行选项</a>
<li><a href=#12>控制面板</a>
</ul>


<a name=2>
<h1>配置 EAGLE</h1>
EAGLE 的全局参数可以在<a href=#12>控制面板</a>中调整。
<p>
下列命令可以用于定制 EAGLE 的工作方式。可以直接从编辑器窗口的命令行给定，或者在 <a href=#93>eagle.scr</a> 文件中给定。
<h2>用户界面</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>命令菜单                 </td><td width=20><td><a href=#66>MENU</a> command..;</td></tr>
<tr><td>分配按键                 </td><td width=20><td><a href=#31>ASSIGN</a> function_key command..;</td></tr>
<tr><td>捕获功能                 </td><td width=20><td><a href=#94>SET</a> SNAP_LENGTH number;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> CATCH_FACTOR value;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> SELECT_FACTOR value;</td></tr>
<tr><td>菜单内容                 </td><td width=20><td><a href=#94>SET</a> USED_LAYERS name | number;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> WIDTH_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> DIAMETER_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> DRILL_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> SMD_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> SIZE_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> ISOLATE_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> SPACING_MENU value..;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> MITER_MENU value..;</td></tr>
<tr><td>导线弯折                 </td><td width=20><td><a href=#94>SET</a> WIRE_BEND bend_nr;</td></tr>
<tr><td>蜂鸣开/关                </td><td width=20><td><a href=#94>SET</a> BEEP OFF | ON;</td></tr>
</table>
<h2>屏幕显示</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>栅格线的颜色     </td><td width=20><td><a href=#94>SET</a> COLOR_GRID color;</td></tr>
<tr><td>层的颜色         </td><td width=20><td><a href=#94>SET</a> COLOR_LAYER layer color;</td></tr>
<tr><td>层的填充样式     </td><td width=20><td><a href=#94>SET</a> FILL_LAYER layer fill;</td></tr>
<tr><td>栅格参数         </td><td width=20><td><a href=#94>SET</a> MIN_GRID_SIZE pixels;</td></tr>
<tr><td>显示的最小文本尺寸 </td><td width=20><td><a href=#94>SET</a> MIN_TEXT_SIZE size;</td></tr>
<tr><td>网络线条的显示     </td><td width=20><td><a href=#94>SET</a> NET_WIRE_WIDTH width;</td></tr>
<tr><td>焊盘的显示          </td><td width=20><td><a href=#94>SET</a> DISPLAY_MODE REAL | NODRILL;</td></tr>
<tr><td>                         </td><td width=20><td><a href=#94>SET</a> PAD_NAMES OFF | ON;</td></tr>
<tr><td>总线线条的显示    </td><td width=20><td><a href=#94>SET</a> BUS_WIRE_WIDTH width;</td></tr>
<tr><td>DRC 填充样式     </td><td width=20><td><a href=#94>SET</a> DRC_FILL fill_name;</td></tr>
<tr><td>多边形处理       </td><td width=20><td><a href=#94>SET</a> POLYGON_RATSNEST OFF | ON;</td></tr>
<tr><td>矢量字体              </td><td width=20><td><a href=#94>SET</a> VECTOR_FONT OFF | ON;</td></tr>
</table>
<h2>模式参数</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>封装检查            </td><td width=20><td><a href=#94>SET</a> CHECK_CONNECTS OFF | ON;</td></tr>
<tr><td>栅格参数            </td><td width=20><td><a href=#54>GRID</a> options;</td></tr>
<tr><td>替换模式            </td><td width=20><td><a href=#94>SET</a> REPLACE_SAME NAMES | COORDS;</td></tr>
<tr><td>UNDO 缓冲区         </td><td width=20><td><a href=#94>SET</a> UNDO_LOG OFF | ON;</td></tr>
<tr><td>Wire 优化           </td><td width=20><td><a href=#94>SET</a> OPTIMIZING OFF | ON;</td></tr>
<tr><td>Net wire 终止       </td><td width=20><td><a href=#94>SET</a> AUTO_END_NET OFF | ON;</td></tr>
<tr><td>自动放置节点         </td><td width=20><td><a href=#94>SET</a> AUTO_JUNCTION OFF | ON;</td></tr>
</table>
<h2>预置参数</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>焊盘形状                </td><td width=20><td><a href=#36>CHANGE</a> SHAPE shape;</td></tr>
<tr><td>导线宽度               </td><td width=20><td><a href=#36>CHANGE</a> WIDTH value;</td></tr>
<tr><td>焊盘/过孔的直径         </td><td width=20><td><a href=#36>CHANGE</a> DIAMETER diameter;</td></tr>
<tr><td>焊盘/过孔/孔的直径 </td><td width=20><td><a href=#36>CHANGE</a> DRILL value;</td></tr>
<tr><td>Smd 尺寸                 </td><td width=20><td><a href=#36>CHANGE</a> SMD width height;</td></tr>
<tr><td>文字高度              </td><td width=20><td><a href=#36>CHANGE</a> SIZE value;</td></tr>
<tr><td>文字厚度           </td><td width=20><td><a href=#36>CHANGE</a> RATIO ratio;</td></tr>
<tr><td>文字字体                </td><td width=20><td><a href=#36>CHANGE</a> FONT font;</td></tr>
<tr><td>文字对齐           </td><td width=20><td><a href=#36>CHANGE</a> ALIGN align;</td></tr>
<tr><td>多边形参数        </td><td width=20><td><a href=#36>CHANGE</a> THERMALS OFF | ON;</td></tr>
<tr><td>多边形参数        </td><td width=20><td><a href=#36>CHANGE</a> ORPHANS OFF | ON;</td></tr>
<tr><td>多边形参数        </td><td width=20><td><a href=#36>CHANGE</a> ISOLATE distance;</td></tr>
<tr><td>多边形参数        </td><td width=20><td><a href=#36>CHANGE</a> POUR SOLID | HATCH | CUTOUT;</td></tr>
<tr><td>多边形参数        </td><td width=20><td><a href=#36>CHANGE</a> RANK value;</td></tr>
<tr><td>多边形参数        </td><td width=20><td><a href=#36>CHANGE</a> SPACING distance;</td></tr>
<tr><td>尺寸标注类型    </td><td width=20><td><a href=#36>CHANGE</a> DTYPE value;</td></tr>
</table>


<a name=3>
<h1>命令行选项</h1>
您可以使用命令行带参数调用 EAGLE。格式如下：
<pre>
eagle [ 选项 [ 文件名 [ 层 ] ] ]
</pre>
<h2>选项</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>-Axxx</tt></td>  <td width=20><td>组装变体</td></tr>
<tr><td><tt>-Cxxx</tt></td>  <td width=20><td>执行给定的命令</td></tr>
<tr><td><tt>-Dxxx</tt></td>  <td width=20><td>绘制公差 (0.1 = 10%)</td></tr>
<tr><td><tt>-Exxx</tt></td>  <td width=20><td>钻孔公差 (0.1 = 10%)</td></tr>
<tr><td><tt>-Fxxx</tt></td>  <td width=20><td>Flash 公差 (0.1 = 10%)</td></tr>
<tr><td><tt>-N-</tt></td>    <td width=20><td>无命令行提示</td></tr>
<tr><td><tt>-O+</tt></td>    <td width=20><td>优化 pen movement</td></tr>
<tr><td><tt>-Pxxx</tt></td>  <td width=20><td>绘图仪 Pen (layer=pen)</td></tr>
<tr><td><tt>-Rxxx</tt></td>  <td width=20><td>drill Rack 文件</td></tr>
<tr><td><tt>-Sxxx</tt></td>  <td width=20><td>脚本文件</td></tr>
<tr><td><tt>-Uxxx</tt></td>  <td width=20><td>用户配置文件</td></tr>
<tr><td><tt>-Wxxx</tt></td>  <td width=20><td>aperture Wheel 文件</td></tr>
<tr><td><tt>-X-</tt></td>    <td width=20><td>运行 CAM 处理器</td></tr>
<tr><td><tt>-c+</tt></td>    <td width=20><td>正坐标</td></tr>
<tr><td><tt>-dxxx</tt></td>  <td width=20><td>Device (-d? for list)</td></tr>
<tr><td><tt>-e-</tt></td>    <td width=20><td>Emulate apertures</td></tr>
<tr><td><tt>-f+</tt></td>    <td width=20><td>填充焊盘</td></tr>
<tr><td><tt>-hxxx</tt></td>  <td width=20><td>页面高度（英寸）</td></tr>
<tr><td><tt>-m-</tt></td>    <td width=20><td>镜像输出</td></tr>
<tr><td><tt>-oxxx</tt></td>  <td width=20><td>输出文件名</td></tr>
<tr><td><tt>-pxxx</tt></td>  <td width=20><td>Pen 直径 (mm)</td></tr>
<tr><td><tt>-q-</tt></td>    <td width=20><td>快速绘图</td></tr>
<tr><td><tt>-r-</tt></td>    <td width=20><td>旋转 90 度输出</td></tr>
<tr><td><tt>-sxxx</tt></td>  <td width=20><td>缩放因子</td></tr>
<tr><td><tt>-u-</tt></td>    <td width=20><td>上下颠倒输出</td></tr>
<tr><td><tt>-vxxx</tt></td>  <td width=20><td>pen Velocity</td></tr>
<tr><td><tt>-wxxx</tt></td>  <td width=20><td>页面宽度（英寸）</td></tr>
<tr><td><tt>-xxxx</tt></td>  <td width=20><td>偏移 X（英寸）</td></tr>
<tr><td><tt>-yxxx</tt></td>  <td width=20><td>偏移 Y（英寸）</td></tr>
</table>
<p>
其中<tt>xxx</tt> 意味着更多的数据，例如，文件名或者一十进制数 需要被 be 追加到 the 选项（不带空格或由空格分隔），如
<pre>
-Wmywheel.whl
-W mywheel.whl
-e      光圈仿真开启
-e+     dto.
-e-     光圈仿真关闭
</pre>
对于标志选项，<tt>'-'</tt> 意味着该选项默认是关闭的，而 <tt>'+'</tt> 意味着它默认是开启的。
<p>
标志选项（比如 <tt>-e</tt>）可以被使用 without repeating the <tt>'-'</tt> 字符:
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>-ecfm</tt></td>  <td width=20><td>光圈仿真开启，正坐标开启，焊盘填充开启</td></tr>
<tr><td><tt>-ec-f+</tt></td> <td width=20><td>光圈仿真开启，正坐标<b>关闭</b>，焊盘填充<b>关闭</b></td></tr>
</table>
<h2>用户设置</h2>
用户设置存储在 <tt>eaglerc</tt> 文件中，默认存储在 <tt>$HOME/.eaglerc</tt>。
<table><tr>
<td valign="top"><img src="platforms-win.png"></td><td valign="middle">在 <b>Windows</b> 系统上，如果名为 HOME 的环境变量未定义，则存储在由注册表键值“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData” 所定义的目录下的 <tt>eaglerc.usr</tt> 文件中。</td>
</tr></table>
如果带命令行选项 <tt>-U</tt>，则另一个文件 can be specified for this。This makes 特定的 sense 当 您想要使用几个 EAGLE 版本 with 不同的设置。<br>
例如：<br>
<tt>C:/Program Files/MyEAGLE5/bin/eagle.exe -UC:/Settings/eaglerc5.usr</tt> 可以启动版本 5 with a V5 specific，<br>
<tt>C:/Program Files/MyEAGLE6/bin/eagle.exe -UC:/Settings/eaglerc6.usr</tt> 可以启动版本 6 with a V6 specific <tt>eaglerc</tt> 文件，which may differ from eaglerc5.usr in the 工程目录，比如。
<p>
如果 <tt>'-'</tt> 符号是作为文件名给定的，比如 <tt>-U-</tt>，则不会读写 <tt>eaglerc</tt> 文件。
<h2>定义公差值</h2>
如果不带 <tt>'+'</tt> 或 <tt>'-'</tt> 符号，则公差值在两个方向都适用：
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>-D0.10</tt></td>         <td width=20><td>调整绘制公差为 &plusmn;10%</td></tr>
<tr><td><tt>-D+0.1 -D-0.05</tt></td> <td width=20><td>调整绘制公差为 +10% 和 -5%</td></tr>
</table>
<h2>执行命令</h2>
如果命令以<tt>'-C'</tt>选项给定，如
<pre>
eagle -C "window (1 1) (2 2);" myboard.brd
</pre>
EAGLE 会载入给定的文件并执行命令，就好象它已在编辑器窗口的命令行键入。
<p>
下列条件适用于 <tt>'-C'</tt> 选项：
<ul>
<li>文件名（电路图，原理图或元件库）必须给定。以便编辑器窗口 将被打开 in which 命令可以执行的。文件不必已存在。命令在载入之后执行 and 相关消息的确认。
<li><tt>eagle.scr</tt> 文件不会自动执行。
<li>选项 <tt>'-s'</tt> 会被忽略。
<li>用户设置不会写回到 <tt>eaglerc</tt> 文件。
<li> 当 EAGLE was left the last time ，任何已被打开的工程将不被打开。
<li>命令可以是单独的，或者是以分号分隔的一系列命令。
</ul>
运行 EAGLE 而不自动执行 <tt>eagle.scr</tt> 文件或载入工程，命令字符串可以为空，如
<pre>
eagle -C ""
</pre>0
请注意，在这种特殊情况下，选项字符和引号之间必须有一个空格，以便该程序会看到显式空字串。这里也不必有文件名，因为实际上也没有命令被执行。
<h2>文件名</h2>
如果给定的文件名为 <tt>eagle.epf</tt> (可选的ly preceded by a 目录名), EAGLE 将会加载工程文件。否则，如果没有给出文件扩展名，则默认为 <tt>.brd</tt>，载入 PCB 图文件。


<a name=4>
<h1>简介</h1>
For a 快速入门 您应该知道更多 关于下列主题：
<ul>
<li><a href=#5>控制面板及编辑器窗口</a>
<li><a href=#28>使用编辑器命令</a>
<li><a href=#6>输入参数和值</a>
<li><a href=#7>绘制原理图</a>
<li><a href=#8>检查原理图</a>
<li><a href=#9>从原理图生成 PCB 图</a>
<li><a href=#10>检查布局</a>
<li><a href=#11>建立库元件</a>
<li><a href=#134>使用自动布线器</a>
<li><a href=#112>使用系统打印机</a>
<li><a href=#116>使用 CAM 处理器</a>
</ul>
如有问题，请联系我们的免费<a href=#365>技术支持</a>。


<a name=5>
<h1>控制面板及编辑器窗口</h1>
从<a href=#12>控制面板</a>您可以通过使用文件菜单或者双击图标打开原理图，PCB 图，或元件库编辑器窗口。


<a name=6>
<h1>输入参数和值</h1>
参数和值可以在 EAGLE 的命令行中输入，或者更便捷，in 参数工具栏 which appear 当一个命令已被激活。As 这是相当不言自明的，帮助文本没有明确地在其它位置提及该选项。
<p>
无论坐标或尺寸（比如宽度、直径等）在哪里输入，都可以给定单位，比如 50mil 或 0.8mm。如果没有给出单位，则使用当前的栅格单位。


<a name=7>
<h1>绘制原理图</h1>
<h2>建立原理图文件</h2>
以您的选择的名字，用 文件/新建 以及 另存为 来建立原理图。
<h2>载入绘图 Frame</h2>
载入 元件库 FRAMES with <a href=#104>USE</a> and place a frame of 您的选择 with <a href=#29>ADD</a>.
<h2>放置符号</h2>
使用 <a href=#104>USE</a> 载入适当的元件库，并放置符号（参见 <a href=#29>ADD</a>, <a href=#69>MOVE</a>, <a href=#43>DELETE</a>，<a href=#90>ROTATE</a>，<a href=#70>NAME</a>, <a href=#105>VALUE</a>）。如果特定的元件不存在，可以用元件库编辑器定义一个新的。
<h2>绘制总线连接</h2>
使用<a href=#35>BUS</a>命令，绘制总线连接。您可以 <a href=#70>NAME</a> 总线 in 这样一种方式 that 您可以把网络从总线拖拽出来 bus which are named accordingly.
<h2>绘制网络连接</h2>
使用 <a href=#71>NET</a> 命令，把绘图上的多个元素的引脚连接起来。相交的网络可以用 <a href=#60>JUNCTION</a> 命令做成连接。


<a name=8>
<h1>检查原理图</h1>
进行电气规则检查（<a href=#49>ERC</a>）以寻找开路的引脚等，并利用产生的消息纠正所有错误。使用 <a href=#95>SHOW</a> 命令 to follow 完整的 网络 across the screen. 必要的话，可以用 <a href=#51>EXPORT</a> 命令生成 netlist，pinlist 或 partlist。


<a name=9>
<h1>从原理图产生 PCB 图</h1>
通过使用<a href=#34>BOARD</a>命令或者点击切换到PCB图图标，您可以从载入的原理图生成PCB图（如果尚无同名的PCB图文件）。
<p>
所有的元件与它们以鼠线绘制的连接一起，出现在准备好放置的空板之下。电源引脚自动地连接到适当的电源（if 无连接 by a net on the 原理图）。
<p>
电路板通过<a href=#362>正&amp;反向编序</a>链接到原理图。这个机制确保了原理图与 PCB 图的一致性。编辑绘图时，必须载入 PCB 图和原理图，以保持正&amp;反向编序处于激活状态。
<h2>设置电路板外框并放置元件</h2>
在移动电路板上的每个封装之前，电路板外框可以用 <a href=#69>MOVE</a> 和 <a href=#99>SPLIT</a> 命令进行适当地调整。一旦放置了所有的封装，就可以用 <a href=#83>RATSNEST</a> 命令优化鼠线。
<h2>定义限制区域</h2>
必要的话，自动布线器的限制区域可以定义为 <a href=#84>RECT</a> 角度，<a href=#79>POLYGON</a>, 或者在 tRestrict，bRestrict 或 vRestrict 层上的 <a href=#37>CIRCLE</a>。请注意：在尺寸标注层上用线绘制闭合的区域也是自动布线器的边界。
<h2>布线</h2>
鼠线现在已转换为 tracks with the aid of the <a href=#91>ROUTE</a> 命令。这个功能也可以由<a href=#33>自动布线器</a>自动地进行。


<a name=10>
<h1>检查布局</h1>
检查布局（<a href=#47>DRC</a>）并纠正错误（<a href=#50>ERRORS</a>）。必要的话可以产生网络、零件，或引脚清单（<a href=#51>EXPORT</a>）


<a name=11>
<h1>建立库元件</h1>
在元件库中建立一个新的零部件有三个步骤。您必须跟随这些步骤 as they build upon each other。
<p>
To start, 打开一个元件库。请使用文件菜单中的打开或新建命令（并非 USE 命令）。
<h2>建立封装</h2>
封装是添加到电路板图的元件的一部分。
<p>
单击编辑封装图标，并通过在对话框的新建栏位中输入它的名称来编辑新的封装。
<p>
设置适当距离的<a href=#54>栅格</a>。
<p>
<a href=#70>NAME</a> 并正确地放置 <a href=#75>PAD</a>。
<p>
用 <a href=#101>TEXT</a> 命令添加文字 &gt;NAME 和 &gt;VALUE（显示电路板图中实际的名称和值）并在适当的层内绘制封装轮廓（<a href=#109>WIRE</a> 命令）。
<h2>建立符号</h2>
符号是添加到原理图的元件的一部分。
<p>
单击编辑符号图标，并通过在对话框的新建栏位中输入它的名称来编辑新的符号。
<p>
用 <a href=#77>PIN</a> 和 <a href=#70>NAME</a> 命令放置、命名引脚并提供引脚参数（<a href=#36>CHANGE</a>）。
<p>
用 <a href=#101>TEXT</a> 命令添加文字 &gt;NAME 和 &gt;VALUE（显示原理图中实际的名称和值），并在适当的层中绘制符号轮廓（<a href=#109>WIRE</a> 命令）。
<h2>建立元件</h2>
Devices are 一个零件的“主要”部分 and use both 一个封装以及一个或多个符号。
<p>
点击编辑元件图标，并通过在对话框的新建栏位中输入它的名称来编辑新的元件。
<p>
用<a href=#74>PACKAGE</a>命令分配封装。
<p>
用 <a href=#29>ADD</a> 添加单元，需要的话您可以有很多单元。
<p>
使用 <a href=#40>CONNECT</a> 指定哪个封装焊盘被连接到每个单元的引脚。
<p>
保存元件库，您可以从原理图或PCB图编辑器 <a href=#104>USE</a> 它。


<a name=12>
<h1>控制面板</h1>
控制面板是 EAGLE 的顶级窗口。
在它左边包含一个树状视图，右边一个信息窗口。
<h2>目录</h2>
树状视图的顶级的项呈现了各种类型的 EAGLE 文件。每一种都可以指向一个或多个包含该类型文件的目录。这些目录的位置可以在<a href=#14>目录对话框</a>内定义。如果顶级的项指向一单个目录，该目录的内容 将出现 如果该项已被打开（或者通过点击 on the little 符号 to the left, 或通过双击该项）。如果这样的一个项指向多个目录，当该项打开时，所有这些目录将被列出 。
<h2>右键菜单</h2>
树项的<a href=#13>右键菜单</a>可以通过用鼠标右键在它们上面点击来访问。它包含选项 specific to the 所选项。
<h2>描述</h2>
树状视图的<b>描述</b>列包含项的简短描述（如果可以的话）。这些描述 are 衍生自 the 文字的第一个非空行 from the 以下 sources:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>目录</td>            <td width=20><td>该目录下名为 DESCRIPTION 的文件</td></tr>
<tr><td>元件库</td>                 <td width=20><td>元件库的描述</td></tr>
<tr><td>元件</td>                <td width=20><td>元件的描述</td></tr>
<tr><td>封装</td>               <td width=20><td>封装的描述</td></tr>
<tr><td>设计规则</td>           <td width=20><td>设计规则文件的描述</td></tr>
<tr><td>用户语言程序</td>           <td width=20><td>以 <tt>#usage</tt> 指令定义的文本</td></tr>
<tr><td>脚本</td>                <td width=20><td>脚本文件起始处的注释</td></tr>
<tr><td>CAM 作业</td>               <td width=20><td>CAM 作业的描述</td></tr>
</table>
<h2>Drag&amp;drop</h2>
您可以在树状视图内使用 <i>拖拽</i> 来复制或移动文件和目录。也可以分别拖拽元件或封装进原理图, PCB 图或元件库窗口，and drop it there to 添加它到绘图。用户语言程序和脚本如果落在编辑器窗口上，则将被执行，设计规则 将 be applied to a board if dropped onto a PCB图编辑器窗口。如果 PCB 图、原理图或元件库文件 落在它的 各自的 编辑器窗口上，它将被载入到编辑器。所有这些功能也可以通过特定的树项的<i>右键菜单</i>来访问。
<h2>信息窗口</h2>
控制面板的右侧显示树状视图中关于当前项的信息。That 信息 is 衍生自 the places listed above under <i>描述</i>。元件和封装也显示它们的内容的预览。
<h2>下拉菜单</h2>
控制面板的<i>下拉菜单</i>包含下列选项：
<h2>文件</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>新建            </td><td width=20><td>建立新文件</td></tr>
<tr><td>打开            </td><td width=20><td>打开已有文件</td></tr>
<tr><td>打开最近的工程  </td><td width=20><td>打开最近使用的一个工程</td></tr>
<tr><td>全部保存        </td><td width=20><td>保存全部修改的编辑器文件</td></tr>
<tr><td>关闭工程        </td><td width=20><td>关闭当前工程</td></tr>
<tr><td>退出            </td><td width=20><td>退出程序</td></tr>
</table>
<h2>查看</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>刷新            </td><td width=20><td>刷新树状视图的内容</td></tr>
<tr><td>在树状视图中搜索</td><td width=20><td>在树状视图（见下文）的目录中搜索</td></tr>
<tr><td>排序            </td><td width=20><td>改变树状视图的排序</td></tr>
</table>
<h2>选项</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>目录...    </td><td width=20><td>打开<a href=#14>目录对话框</a></td></tr>
<tr><td>备份...         </td><td width=20><td>打开<a href=#15>备份对话框</a></td></tr>
<tr><td>用户界面... </td><td width=20><td>打开<a href=#16>用户界面对话框</a></td></tr>
<tr><td>窗口位置...</td><td width=20><td>打开<a href=#17>窗口位置对话框</a></td></tr>
</table>
<h2>窗口</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>控制面板         </td><td width=20><td>切换到控制面板</td></tr>
<tr><td>1 原理图 - ...     </td><td width=20><td>切换到 1 号窗口</td></tr>
<tr><td>2 PCB图 - ...         </td><td width=20><td>切换到 2 号窗口</td></tr>
</table>
<h2>帮助</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>常规性的帮助     </td><td width=20><td>打开常规性的帮助页</td></tr>
<tr><td>上下文          </td><td width=20><td>打开当前上下文的帮助页</td></tr>
<tr><td>控制面板         </td><td width=20><td>打开您当前正在查找的帮助页</td></tr>
<tr><td>EAGLE 许可       </td><td width=20><td>打开<a href=#367>许可对话框</a></td></tr>
<tr><td>检查更新         </td><td width=20><td><a href=#18>检查</a>是否有可用的 EAGLE 的新版本</td></tr>
<tr><td>关于 EAGLE       </td><td width=20><td>显示关于您的 EAGLE 版本以及<a href=#366>许可</a>的详细信息</td></tr>
</table>
<h2>搜索栏</h2>
<i>Search</i> 模式可以是一个或以空格分隔的多个字。这些被搜索的字 大小写不敏感 in the tree 名称和描述，并且必须<u>全部</u>匹配。通配符 '*' 匹配任意数量的非空白字符，而 '?' 精确地匹配这些字符<u>之一</u>。为搜索通配符自身 it has to be escaped like '\*'. 为限制搜索到的树的分支，可以在它的右键菜单中启动搜索。为从 74xx 系列查找一个 NAND 元件，例如输入：<tt>74* nand</tt>
<h2>状态行</h2>
控制面板底部的状态行包含当前所选项的完整名称。


<a name=13>
<h1>右键菜单</h1>
在一个项上点击Clicking on an item in the <a href=#12>控制面板</a> with the 鼠标右键打开一右键菜单 which 允许以下动作（并非它们全部 may be present on a 特定的项）：
<h2>新建文件夹</h2>
在所选的文件夹下建立一新的文件夹，并把建立的树项放入 <i>重命名</i> 模式。
<h2>编辑描述</h2>
将目录的 DESCRIPTION 文件载入 HTML 编辑器。
<h2>重命名</h2>
使树项的文字进入编辑模式，以便它可以被重命名。
<h2>复制</h2>
打开一个您可以输入名称的文件对话框以便复制该文件或目录。您也可以使用 <i>拖拽</i> 进行。
<h2>删除</h2>
删除文件或目录（您将被提示确认您真的希望这种事情发生）。
<h2>使用</h2>
标记这个元件库为 <i>used</i> 当 搜索元件或封装。您也可以点击树状视图的第二列上的图标 to 切换这个标志。
<h2>全部使用</h2>
标记元件库路径内的所有元件库为 <i>used</i> 当 搜索元件或封装。
<h2>Use none</h2>
从所有元件库移除 <i>use</i>（包括不在元件库路径内的元件库）。
<h2>更新</h2>
更新 所有零件 used 从这个元件库 in the 载入的 PCB 图和原理图。
<h2>在元件库中更新</h2>
在载入的元件库更新使用自这个元件库动所有封装。
<h2>添加到原理图</h2>
在原理图窗口用此元件启动 <a href=#29>ADD</a> 命令。您也可以使用 <i>拖拽</i> 进行。
<h2>添加到 PCB 图</h2>
启动 <a href=#29>ADD</a> 命令 在电路板图窗口 with 该封装。您也可以使用 <i>拖拽</i> 进行。
<h2>复制到元件库</h2>
复制所选的元件集或封装到已载入的元件库。 您也可以使用 <i>拖拽</i> 进行。
<h2>元件库中新建封装变体</h2>
建立新的封装变体 with the 所选的封装 in the 当前载入的元件库的元件集。 您也可以使用 <i>拖拽</i> 进行。
<h2>打开/关闭工程</h2>
打开或关闭这个工程。您也可以通过点击树状视图的第二列的图标进行。
<h2>新建</h2>
以给定类型的新文件打开一窗口。
<h2>打开</h2>
在适当的窗口里打开该文件。您也可以使用 <i>拖拽</i> 进行。
<h2>打印...</h2>
打印文件到系统打印机。关于如何使用打印对话框的更多信息请阅读章节<a href=#112>打印到系统打印机</a>。
<p>
通过右键菜单选项打印文件将始终打印它在磁盘上的文件，即使您已经有个打开的您已经修改了文件的编辑器窗口！使用 <a href=#81>PRINT</a> 命令 to 打印绘图 from 一个打开的编辑器窗口。<br>
<b>请注意，在通过右键菜单打印时，不会自动地计算 PCB 图中的多边形！只会绘制外框。为打印多边形（覆铜） in 它们的已计算的形状 您不得不将绘图载入进编辑器窗口，输入 <a href=#83>RATSNEST</a> 然后 <a href=#81>PRINT</a></b>。
<h2>运行于 ...</h2>
在当前的原理图中运行此用户语言程序，PCB 图或元件库。您也可以用 <i>拖拽</i> 进行。
<h2>执行于 ...</h2>
在当前的原理图中执行此脚本文件，PCB 图或元件库。您也可以用 <i>拖拽</i> 进行。
<h2>载入到 PCB 图</h2>
载入这组设计规则到当前的 PCB 图中。您也可以用 <i>拖拽</i> 进行。


<a name=14>
<h1>目录</h1>
<i>目录</i>对话框用于定义搜索文件的目录路径。
<p>
所有条目可以包含一个或多个目录，以冒号（<b><tt>':'</tt></b>）分隔，in which to 查找不同类型的文件。
<table><tr>
<td valign="top"><img src="platforms-win.png"></td>
<td valign="middle"> 在 <b>Windows</b> 系统上，单独的目录名称是由分号（<b><tt>';'</tt></b>）分隔的。</td>
</tr></table>
当输入 <a href=#72>OPEN</a>、<a href=#104>USE</a>、<a href=#93>SCRIPT</a> 或 <a href=#92>RUN</a> 命令时, 这些路径将被从左到右搜索以定位文件。如果文件对话框用于访问这些类型之一的一个文件，the 目录 into which the 用户 has navigated 通过文件对话框 将 be implicitly added to the end of the 各自的 搜索路径.
<p>
特殊变量 <tt>$HOME</tt> 与 <tt>$EAGLEDIR</tt> 可以分别用于引用用户的 home 目录和 EAGLE 程序目录。
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
在 <b>Windows</b> 上，<tt>$HOME</tt> 的值或者为环境变量 HOME（如果设置了的话），或者为注册表键值 "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell&nbsp;Folders\Personal" 的值，which 包含“我的文档”目录的实际名称。
</td></tr></table>


<a name=15>
<h1>备份</h1>
<i>备份</i>对话框允许您定制<a href=#361>自动备份</a>功能。
<h2>最大备份 level</h2>
定义当用 WRITE 命令定时将您的 EAGLE 数据文件保存到磁盘时应该保持多少份备份副本（默认为 9）。
<h2>自动备份间隔时间（分钟）</h2>
定义 EAGLE 自动建立任何已修改绘图的安全备份的最大时间（默认为 5）。
<h2>自动保存工程文件</h2>
如果该选项被选中，在退出程序时，您的工程设置会被自动保存。请注意，当您有个工程已打开，如果您不选中该选项，在您关闭该工程时，将不会保存，因而该设置将不会存储在工程的 eagle.epf 文件。这意味着下一次您打开这个工程，这个选项将会再次选中。如果您想要该选项 to remain unchecked for the 当前工程，您需要在取消该选项的选中之后从下拉菜单手动选择 “文件/全部保存” 。


<a name=16>
<h1>用户界面</h1>
<i>用户界面</i> 对话框允许您定制布局、原理图和元件库的<a href=#21>编辑器窗口</a>的的外观。
<h2>Controls</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>下拉菜单        </td><td width=20><td>激活编辑器窗口顶部的下拉菜单</td></tr>
<tr><td>动作工具栏       </td><td width=20><td>激活包含“文件”、“打印”等按钮的动作工具栏。</td></tr>
<tr><td>参数工具栏    </td><td width=20><td>激活动态参数工具栏, which 包含当前激活的命令容许的所有参数</td></tr>
<tr><td>命令按钮      </td><td width=20><td>激活命令按钮</td></tr>
<tr><td>命令文本        </td><td width=20><td>激活文本命令菜单</td></tr>
<tr><td>图纸缩略图     </td><td width=20><td>激活图纸缩略图预览</td></tr>
</table>
<h2>布局</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>背景               </td><td width=20><td>为布局模式选择黑、白或彩色的背景</td></tr>
<tr><td>光标               </td><td width=20><td>为布局模式选择小或大的光标</td></tr>
</table>
<h2>原理图</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>背景               </td><td width=20><td>为原理图模式选择黑，白或彩色的背景</td></tr>
<tr><td>光标               </td><td width=20><td>为原理图模式选择或小或大的光标</td></tr>
</table>
<h2>竖直文本 Vertical text</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>新绘图         </td><td width=20><td>选择新建立的绘图中竖直文本的读取方向</td></tr>
<tr><td>本绘图         </td><td width=20><td>选择当前载入的绘图中竖直文本的读取方向</td></tr>
</table>
<h2>帮助</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>气泡帮助          </td><td width=20><td>激活“气泡”功能，当移动鼠标光标经过按钮时，弹出关于按钮的简短提示</td></tr>
<tr><td>用户指南        </td><td width=20><td>激活“用户指南”功能，用来显示帮助文本告诉用户当一个命令处于激活状态时，下一个有意义的动作是什么</td></tr>
</table>
<h2>杂项</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>始终使用矢量字体   </td><td width=20><td>始终在绘图内以内建的矢量字体显示文字。不管regardless of which 字体 is actually set for a 特定的文字</td></tr>
<tr><td>鼠标滚轮缩放     </td><td width=20><td>定义了当鼠标滚轮滚动时，将用于编辑器窗口放大和缩小的缩放因子（'0' 禁止该功能，这个值的符号定义了缩放操作的方向）</td></tr>
</table>


<a name=17>
<h1>窗口位置</h1>
<i>窗口位置</i>对话框允许您存储当前所有打开的窗口的位置，以便将来同一类型的窗口再次打开时，它会出现在与之前相同的位置。
<p>
您也可以删除所有已存储的窗口位置，以便窗口管理器可以再次判定放置新打开的窗口。


<a name=18>
<h1>检查更新</h1>
控制面板的下拉菜单中的选项“帮助/检查更新”打开一对话框，显示在 CadSoft 服务器上是否有 EAGLE 的新版本。
<p>
<b>配置</b>按钮打开一个对话框 in which 您可以指定是否以及应该多久自动地进行一次新的版本的检查 upon 程序启动（默认情况下，它每天检查一次）。如果您需要使用代理来访问互联网，也可以在配置对话框指定。在“主机”域中输入代理主机的全名，不含 <tt>http://</tt> 前缀，并在“端口”字段中输入一个可选的端口号。
<p>
如果您愿意获知 EAGLE 的测试版本，您可以选中“同时检查测试版本”复选框。


<a name=19>
<h1>键盘及鼠标</h1>
<i>变换键</i>（<tt>Alt</tt>，<tt>Ctrl</tt> 和 <tt>Shift</tt>）用于修改确定的鼠标动作行为。请注意，这依赖于操作系统或您所用的窗口管理器，其中一些按键（与鼠标事件的组合）可能无法传递到应用程序，which 意味着这里描述的一些函数可能不适用。
<h2>Alt</h2>
按 <tt>Alt</tt> 键切换至一备用 <a href=#54>GRID</a>。这可以典型地是一个比正常更细的栅格，which 允许您在密集区域快速地做一些精细定位，比如, where the 正常栅格可能是过于粗大。只要按住 <tt>Alt</tt> 键就可以保持备用栅格的激活状态。
<h2>Ctrl</h2>
按 <tt>Ctrl</tt> 键，在点击鼠标右键时，可以在相应的导线弯折样式之间切换（仅适用于支持导线弯折样式的命令，比如 <a href=#109>WIRE</a>）。
<p>
<tt>Ctrl</tt> 键与鼠标左键一起控制单独的命令特殊功能，比如，选择一个对象 at 它的 原点 with the <a href=#69>MOVE</a> 命令。
<p>
如果一个命令可以选择组，当选择这个组时，<tt>Ctrl</tt> 键必须同鼠标右键一同按下（除非所选对象的右键菜单将被打开）。
<p>
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">在 <b>Mac OS X</b> 系统上，要用 <tt>Cmd</tt> 键替代 <tt>Ctrl</tt> 键。</td></tr></table>
<h2>Shift</h2>
当点击鼠标右键时，按 <tt>Shift</tt> 键会反转导线弯折样式切换的方向（仅适用于支持导线弯折样式的命令，比如, <a href=#109>WIRE</a>）。
<p>
<tt>Shift</tt> 键与鼠标左键一起控制单独的命令的特殊功能，比如用 <a href=#43>DELETE</a> 命令删除一更高级的对象。
<h2>Esc</h2>
在一个命令处于激活状态时，按 <tt>Esc</tt> 键将取消当前命令的激活  that 命令 不取消整个命令（如果命令行中存在文本，该文本将首先被删除，and <tt>Esc</tt> 键的下一次按下将对命令起作用）。对于 <a href=#69>MOVE</a> 命令，例如，这意味着一个当前附在光标的对象将被丢弃，而其它对象成为可选的。
<h2>Crsr-Up/Down</h2>
按键 <tt>Crsr-Up</tt>（光标向上）和 <tt>Crsr-Down</tt>（光标向下）可用于编辑器窗口的命令行滚动命令历史。
<h2>功能键</h2>
功能键可以用 <a href=#31>ASSIGN</a> 命令分配给任何命令。
<h2>鼠标左键</h2>
鼠标左键通常用于选择、绘制或放置对象。
<h2>鼠标中键</h2>
鼠标中键改变当前的层，或者镜像当前附在鼠标光标上的对象。
<p>
支持鼠标中键的命令如下:
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#29>ADD</a>            </td><td width=20><td>镜像零件</td></tr>
<tr><td><a href=#30>ARC</a>            </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#37>CIRCLE</a>         </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#41>COPY</a>           </td><td width=20><td>镜像对象</td></tr>
<tr><td><a href=#59>INVOKE</a>         </td><td width=20><td>镜像单元</td></tr>
<tr><td><a href=#61>LABEL</a>          </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#69>MOVE</a>           </td><td width=20><td>镜像对象或组</td></tr>
<tr><td><a href=#76>PASTE</a>          </td><td width=20><td>镜像组</td></tr>
<tr><td><a href=#79>POLYGON</a>        </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#84>RECT</a>           </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#91>ROUTE</a>          </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#98>SMD</a>            </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#101>TEXT</a>          </td><td width=20><td>改变激活层</td></tr>
<tr><td><a href=#109>WIRE</a>          </td><td width=20><td>改变激活层</td></tr>
</table>
<p>
在编辑器窗口内点击鼠标中键并拖拽鼠标将平移绘图。
<h2>鼠标右键</h2>
鼠标右键最常用于选择组，旋转附在鼠标光标的对象，改变导线弯折样式以及其它几个命令特殊 函数.
<p>
当用鼠标右键选择对象时，a 上下文特定的弹出菜单 被显示 from 适用于这个可选的对象的命令。如果 there is 当前 一个命令 激活 that 可以应用于一个组，弹出菜单将包含 一个项 for this.
<p>
鼠标右键支持如下命令：
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#29>ADD</a>  </td><td width=20><td>旋转零部件</td></tr>
<tr><td><a href=#30>ARC</a>            </td><td width=20><td>改变弧的方向</td></tr>
<tr><td><a href=#35>BUS</a>            </td><td width=20><td>改变导线弯折</td></tr>
<tr><td><a href=#36>CHANGE</a>      </td><td width=20><td>应用改变 to 组</td></tr>
<tr><td><a href=#43>DELETE</a>      </td><td width=20><td>删除组</td></tr>
<tr><td><a href=#55>GROUP</a>        </td><td width=20><td>封闭多边形</td></tr>
<tr><td><a href=#59>INVOKE</a>      </td><td width=20><td>旋转 单元</td></tr>
<tr><td><a href=#61>LABEL</a>        </td><td width=20><td>旋转标签</td></tr>
<tr><td><a href=#67>MIRROR</a>      </td><td width=20><td>镜像组</td></tr>
<tr><td><a href=#69>MOVE</a>          </td><td width=20><td>旋转对象，选择组</td></tr>
<tr><td><a href=#71>NET</a>            </td><td width=20><td>改变导线弯折</td></tr>
<tr><td><a href=#75>PAD</a>            </td><td width=20><td>旋转焊盘</td></tr>
<tr><td><a href=#76>PASTE</a>        </td><td width=20><td>旋转组</td></tr>
<tr><td><a href=#77>PIN</a>            </td><td width=20><td>旋转引脚</td></tr>
<tr><td><a href=#79>POLYGON</a>    </td><td width=20><td>改变导线弯折</td></tr>
<tr><td><a href=#89>RIPUP</a>        </td><td width=20><td>拆解已布线的组</td></tr>
<tr><td><a href=#90>ROTATE</a>      </td><td width=20><td>旋转组</td></tr>
<tr><td><a href=#91>ROUTE</a>        </td><td width=20><td>改变导线弯折</td></tr>
<tr><td><a href=#98>SMD</a>            </td><td width=20><td>旋转 smd</td></tr>
<tr><td><a href=#99>SPLIT</a>        </td><td width=20><td>改变导线弯折</td></tr>
<tr><td><a href=#101>TEXT</a>          </td><td width=20><td>旋转文字</td></tr>
<tr><td><a href=#109>WIRE</a>          </td><td width=20><td>改变导线弯折</td></tr>
</table>
<h2>鼠标滚轮</h2>
在编辑器窗口中，鼠标滚轮可以用于缩放。


<a name=20>
<h1>在密集区域中选择对象</h1>
在您试图在几个对象放得很接近的位置选择一个对象，a 四向箭头及 question
<p>
<i>选择高亮的对象？（左键：是，右键：下一个，ESC：取消）</i>
<p>
指示您现在可以选择这些对象之一。
<p>
按鼠标右键切换到下一个对象。
<p>
点击鼠标左键选择高亮的对象。
<p>
按 Esc 取消选择过程。
<p>
命令
<pre>
<a href=#94>SET</a> Select_Factor select_radius;
</pre>
定义了选择半径。
<p>
如果原始的选择是由鼠标右键完成的，a 上下文特定的弹出菜单 将被显示ed which 适用于 the 第一个 所选的对象，and which 包含 "Next" 作为第一个条目。在这个条目上点击将 cyclically switch through the 对象 within 选择的半径。


<a name=21>
<h1>编辑器窗口</h1>
EAGLE 知道不同的数据文件类型，其中的每一个都有它自己的编辑器窗口类型。通过在<a href=#12>控制面板</a>中的项上双击 或从<b>文件/打开</b>菜单选择一个文件，an 编辑器窗口 suitable for that 文件 将被打开。
<ul>
<li><a href=#22>元件库编辑器</a>
<li><a href=#25>原理图编辑器</a>
<li><a href=#24>电路板编辑器</a>
<li><a href=#26>文本编辑器</a>
</ul>


<a name=22>
<h1>元件库编辑器</h1>
<i>元件库编辑器</i> 用于编辑元件库（<tt>*.lbr</tt>）。
<p>
在打开一个新的元件库编辑器窗口之后，编辑区域将为空，您必须用 <a href=#48>EDIT</a> 命令选择封装，符号或你想编辑或者建立的元件。


<a name=23>
<h1>编辑元件库对象</h1>
在元件库编辑模式下，您可以编辑封装、符号以及元件。
<p>
<b>Package</b>：封装定义。
<p>
<b>Symbol</b>：显示在电路图中的符号。the 符号 as it appears in the 电路图。
<p>
<b>Device</b>：整个元件的定义。包含一个或多个封装变体以及一个或几个符号（例如单元）。
符号可以是互不相同的。
<p>
点击 <b>Dev</b>、<b>Pac</b> 或 <b>Sym</b> 按钮以分别选择元件、封装或符号。
<p>
如果您想要建立新的对象，在 <b>New</b> 字段中写入新对象的名称。也可以通过在这个字段中输入名称来编辑已有的对象。如果您 忽略 the extension, an 对象 of the type indicated by the <b>选择...</b> prompt 将被载入的。否则将载入扩展名做指明类型的对象。
<p>
如果您的<a href=#366>许可</a>不包含原理图模块，则菜单中不会显示对象类型按钮（<b>Dev</b>...）。


<a name=24>
<h1>电路板编辑器</h1>
<i>电路板编辑器</i> 用于编辑 PCB 图（<tt>*.brd</tt>）。
<p>
当存在与电路板图文件（在同一目录下）同名的原理图文件 (<tt>*.sch</tt>)时，打开 PCB 图编辑器窗口将自动打开包含该文件的<a href=#25>原理图编辑</a>窗口 and 将它放到桌面作为 an 图标。这是必要的 to have the 原理图文件 载入的 当 当编辑 PCB 图 导致变动 that 必须<a href=#362>反向编序</a>到原理图。


<a name=25>
<h1>原理图编辑器</h1>
<i>原理图编辑器</i>用于编辑原理图（<tt>*.sch</tt>）。
<p>
当存在与原理图文件（在同一目录下）同名的电路板图文件（<tt>*.brd</tt>）时，打开原理图编辑器窗口将自动地打开包含该文件的<a href=#24>电路板编辑器</a>窗口，并将把它作为图标放到桌面。这是必须的 to have the 电路板图文件 载入的 当 编辑原理图 导致修改 that 必须<a href=#362>正向编序</a>到 PCB 图。
<p>
原理图编辑器窗口的动作工具栏中的下拉列表框允许您在原理图的不同图纸之间切换，或添加新的图纸（也可以用 <a href=#48>EDIT</a> 命令完成）。


<a name=26>
<h1>文本编辑器</h1>
<i>文本编辑器</i>用于编辑任意种类的文本。
<p>
文本必须是纯 ASCII 文件，并且必须不包含任何控制码。文本编辑器的主要用途是编写<a href=#141>用户语言程序</a>以及<a href=#93>脚本文件</a>。
<h2>使用外部文本编辑器</h2>
如果您喜欢使用外部文本编辑器替代 EAGLE 内建的文本编辑器，您可以在 "选项/""选项/用户界面" 对话框中指定所需的命令以启动编辑器。
<p>
Within that 命令 the 以下占位符将以实际值替换：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>%C</tt></td><td width=20><td>放置光标的列（当前始终 <tt>1</tt>）</td></tr>
<tr><td><tt>%F</tt></td><td width=20><td>载入的文件名称</td></tr>
<tr><td><tt>%L</tt></td><td width=20><td>放置光标的行</td></tr>
</table>
<p>
如果命令仅包含连字符（<tt>'-'</tt>），EAGLE 将从不打开一文本编辑器窗口。这可能对 有用 对于 people who 始终由他们自己启动他们自己的文本编辑器。
<p>
当使用外部文本编辑器时，以下限制必须遵守：
<ul>
<li>外部文本编辑器作为独立的进程运行，EAGLE 无法知道载入的文件是否已经修改。在您做了修改之后，要靠您自己来保存文件 。
<li>如果同一文件 载入到文本编辑器 几次，这依赖于文本编辑器的配置 in use whether it 打开一新的窗口 每次，或 whether it 载入文件到同一窗口里。
<li>外部文本编辑器窗口不显示在 EAGLE 的窗口列表中，因此并不存储在工程文件中，并且当工程稍后再次打开时不会被重新打开。
<li>在退出 EAGLE 时，外部文本编辑器进程会被终止。这依赖于操作系统 and the 特定的 文本编辑器是否 you are queried 如果文件已被修改 and 应被保存。should be saved.
<li>“文件/全部保存”功能不会保存由外部文本编辑器编辑的文件。
<li>在从旧的 EAGLE 版本加载文件时，可能给出的更新报告始终显示在内置的文本编辑器中。
</ul>


<a name=27>
<h1>编辑器命令</h1>
<h2>改变模式/文件命令</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#39>CLOSE</a>     </td><td width=20><td>编辑后关闭绘图</td></tr>
<tr><td><a href=#48>EDIT</a>      </td><td width=20><td>载入/建立绘图</td></tr>
<tr><td><a href=#51>EXPORT</a>    </td><td width=20><td>生成 ASCII 列表（例如 netlist）</td></tr>
<tr><td><a href=#72>OPEN</a>      </td><td width=20><td>打开元件库进行编辑</td></tr>
<tr><td><a href=#82>QUIT</a>      </td><td width=20><td>退出 EAGLE</td></tr>
<tr><td><a href=#86>REMOVE</a>    </td><td width=20><td>删除文件/库元素</td></tr>
<tr><td><a href=#93>SCRIPT</a>    </td><td width=20><td>执行命令文件</td></tr>
<tr><td><a href=#104>USE</a>       </td><td width=20><td>载入元件库以放置元素</td></tr>
<tr><td><a href=#110>WRITE</a>     </td><td width=20><td>保存绘图/元件库</td></tr>
</table>
<h2>编辑绘图或者元件库</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#29>ADD</a>       </td><td width=20><td>添加元素至绘图/符号至元件</td></tr>
<tr><td><a href=#30>ARC</a>       </td><td width=20><td>绘制圆弧</td></tr>
<tr><td><a href=#32>ATTRIBUTE</a>  </td><td width=20><td>定义属性</td></tr>
<tr><td><a href=#37>CIRCLE</a>    </td><td width=20><td>画圆</td></tr>
<tr><td><a href=#38>CLASS</a>     </td><td width=20><td>定义网络分类</td></tr>
<tr><td><a href=#41>COPY</a>      </td><td width=20><td>复制对象/元素</td></tr>
<tr><td><a href=#42>CUT</a>       </td><td width=20><td>剪切以前定义的组</td></tr>
<tr><td><a href=#43>DELETE</a>    </td><td width=20><td>删除对象</td></tr>
<tr><td><a href=#44>DESCRIPTION</a> </td><td width=20><td>改变对象的描述</td></tr>
<tr><td><a href=#55>GROUP</a>     </td><td width=20><td>为后续操作定义组</td></tr>
<tr><td><a href=#57>HOLE</a>      </td><td width=20><td>定义非导电孔</td></tr>
<tr><td><a href=#62>LAYER</a>     </td><td width=20><td>建立/改变层</td></tr>
<tr><td><a href=#67>MIRROR</a>    </td><td width=20><td>镜像对象</td></tr>
<tr><td><a href=#68>MITER</a>     </td><td width=20><td>斜切线接头（人字线接头）</td></tr>
<tr><td><a href=#69>MOVE</a>      </td><td width=20><td>移动或旋转对象</td></tr>
<tr><td><a href=#70>NAME</a>      </td><td width=20><td>命名对象</td></tr>
<tr><td><a href=#76>PASTE</a>     </td><td width=20><td>粘贴先前剪切的组到绘图中</td></tr>
<tr><td><a href=#79>POLYGON</a>   </td><td width=20><td>绘制多边形</td></tr>
<tr><td><a href=#84>RECT</a>      </td><td width=20><td>绘制矩形</td></tr>
<tr><td><a href=#90>ROTATE</a>    </td><td width=20><td>旋转对象</td></tr>
<tr><td><a href=#97>SMASH</a>     </td><td width=20><td>准备 NAME/VALUE 文字以便移动</td></tr>
<tr><td><a href=#99>SPLIT</a>     </td><td width=20><td>弯折导线/线条（tracks, 网络, etc.）</td></tr>
<tr><td><a href=#101>TEXT</a>      </td><td width=20><td>添加文字至绘图</td></tr>
<tr><td><a href=#105>VALUE</a>     </td><td width=20><td>输入/改变元件的值</td></tr>
<tr><td><a href=#109>WIRE</a>      </td><td width=20><td>绘制 line 或 routed track</td></tr>
</table>
<h2>用于 Boards 的特殊命令</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#47>DRC</a>       </td><td width=20><td>执行设计规则检查</td></tr>
<tr><td><a href=#50>ERRORS</a>    </td><td width=20><td>显示 DRC 错误</td></tr>
<tr><td><a href=#63>LOCK</a>    </td><td width=20><td>锁定元件的位置</td></tr>
<tr><td><a href=#83>RATSNEST</a>  </td><td width=20><td>显示最短鼠线</td></tr>
<tr><td><a href=#88>REPLACE</a>   </td><td width=20><td>替换元件</td></tr>
<tr><td><a href=#89>RIPUP</a>     </td><td width=20><td>Ripup routed track</td></tr>
<tr><td><a href=#91>ROUTE</a>     </td><td width=20><td>Route 信号</td></tr>
<tr><td><a href=#96>SIGNAL</a>    </td><td width=20><td>定义信号（鼠线）</td></tr>
<tr><td><a href=#107>VIA</a>       </td><td width=20><td>放置过孔-孔洞</td></tr>
</table>
<h2>用于原理图的特殊命令</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#34>BOARD</a>      </td><td width=20><td>从原理图建立 PCB 图</td></tr>
<tr><td><a href=#35>BUS</a>       </td><td width=20><td>绘制总线</td></tr>
<tr><td><a href=#49>ERC</a>       </td><td width=20><td>执行电器规则检查</td></tr>
<tr><td><a href=#53>GATESWAP</a>  </td><td width=20><td>交换等价“单元”</td></tr>
<tr><td><a href=#59>INVOKE</a>    </td><td width=20><td>从已放置的元件添加特定的“单元”</td></tr>
<tr><td><a href=#60>JUNCTION</a>  </td><td width=20><td>放置连接点</td></tr>
<tr><td><a href=#61>LABEL</a>     </td><td width=20><td>为总线或网络提供标签</td></tr>
<tr><td><a href=#71>NET</a>       </td><td width=20><td>定义网络</td></tr>
<tr><td><a href=#78>PINSWAP</a>   </td><td width=20><td>交换等价引脚</td></tr>
</table>
<h2>用于元件库的特殊命令</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#40>CONNECT</a>   </td><td width=20><td>定义引脚/焊盘分配</td></tr>
<tr><td><a href=#74>PACKAGE</a>   </td><td width=20><td>为元件定义封装</td></tr>
<tr><td><a href=#75>PAD</a>       </td><td width=20><td>添加焊盘至封装</td></tr>
<tr><td><a href=#77>PIN</a>       </td><td width=20><td>添加引脚至符号</td></tr>
<tr><td><a href=#80>PREFIX</a>    </td><td width=20><td>定义元件的默认前缀</td></tr>
<tr><td><a href=#86>REMOVE</a>    </td><td width=20><td>删除元件库元素</td></tr>
<tr><td><a href=#87>RENAME</a>    </td><td width=20><td>重命名 符号/封装/元件</td></tr>
<tr><td><a href=#98>SMD</a>       </td><td width=20><td>添加 SMD 焊盘至封装</td></tr>
<tr><td><a href=#100>TECHNOLOGY</a> </td><td width=20><td>为元件定义技术工艺</td></tr>
<tr><td><a href=#105>VALUE</a>     </td><td width=20><td>定义 if value text 可以改变</td></tr>
</table>
<h2>改变屏幕显示及 用户界面</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#31>ASSIGN</a>    </td><td width=20><td>按键分配</td></tr>
<tr><td><a href=#36>CHANGE</a>    </td><td width=20><td>改变参数</td></tr>
<tr><td><a href=#46>DISPLAY</a>   </td><td width=20><td>显示/隐藏层</td></tr>
<tr><td><a href=#54>GRID</a>      </td><td width=20><td>定义栅格/单位</td></tr>
<tr><td><a href=#66>MENU</a>      </td><td width=20><td>配置命令菜单</td></tr>
<tr><td><a href=#94>SET</a>       </td><td width=20><td>设置参数</td></tr>
<tr><td><a href=#108>WINDOW</a>    </td><td width=20><td>选择屏幕窗口</td></tr>
</table>
<h2>杂项命令</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#33>AUTO</a>      </td><td width=20><td>启动自动布线器</td></tr>
<tr><td><a href=#56>HELP</a>      </td><td width=20><td>显示帮助页</td></tr>
<tr><td><a href=#58>INFO</a>      </td><td width=20><td>显示关于工程的信息</td></tr>
<tr><td><a href=#64>MARK</a>      </td><td width=20><td>设置/清除标记（for 测量）</td></tr>
<tr><td><a href=#73>OPTIMIZE</a>  </td><td width=20><td>优化（连接）线段</td></tr>
<tr><td><a href=#81>PRINT</a>    </td><td width=20><td>打印到系统打印机</td></tr>
<tr><td><a href=#85>REDO</a>      </td><td width=20><td>重做命令</td></tr>
<tr><td><a href=#92>RUN</a>        </td><td width=20><td>运行用户语言程序</td></tr>
<tr><td><a href=#95>SHOW</a>      </td><td width=20><td>高亮的对象</td></tr>
<tr><td><a href=#102>UNDO</a>      </td><td width=20><td>撤消命令</td></tr>
<tr><td><a href=#103>UPDATE</a>  </td><td width=20><td>更新元件库对象</td></tr>
</table>


<a name=28>
<h1>命令语法</h1>
EAGLE 的命令能以不同的方法输入：
<ul>
<li>使用键盘以文本输入
<li>使用鼠标 by 选择菜单项或点击图标
<li>使用已分配的按键（参见 <a href=#31>ASSIGN</a> 命令）
<li>使用命令文件（参见 <a href=#93>SCRIPT</a> 命令）
</ul>
所有这些方法都可以混合使用。
<p>
<tt>大写字母</tt>的命令和参数是直接输入的（或者用鼠标在命令菜单中选择）。对于输入，小写和大写字母之间没有区别。
<p>
<tt>小写字母</tt>的参数由名称，数值或关键字替换。例如：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>语法：   </td><td width=20><td><tt>GRID grid_size grid_multiple;</tt></td></tr>
<tr><td>输入：   </td><td width=20><td><tt>GRID 1 10;</tt></td></tr>
</table>
<h2>简短关键字</h2>
对于命令名称及其它关键字，only so 很多字符 必须被输入 that 它们明显与其它关键字不同。
<h2>备选参数</h2>
The sign | means that 备选参数 can be indicated. 例如：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>语法：    </td><td width=20><td><tt>SET BEEP OFF | ON;</tt></td></tr>
<tr><td>输入：    </td><td width=20><td><tt>SET BEEP OFF;</tt></td></tr>
<tr><td>          </td><td width=20><td>or</td></tr>
<tr><td>          </td><td width=20><td><tt>SET BEEP ON;</tt></td></tr>
</table>
<h2>重复的点</h2>
符号 .. 意味着该功能可以被执行几次，或允许几个同一类型的参数。例如：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>语法：   </td><td width=20><td><tt>DISPLAY option layer_name..</tt></td></tr>
<tr><td>输入：   </td><td width=20><td><tt>DISPLAY TOP PINS VIAS</tt></td></tr>
</table>
<h2>坐标</h2>
符号 &#149; 一般意味着一个用鼠标左键选择的对象 的 所在点  at this point in the 命令。例如：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>语法：   </td><td width=20><td><tt>MOVE &#149; &#149;..</tt></td></tr>
<tr><td>输入：   </td><td width=20><td><tt>MOVE</tt></td></tr>
<tr><td>         </td><td width=20><td><tt>鼠标点击on the 第一个 元素 to be moved</tt></td></tr>
<tr><td>         </td><td width=20><td><tt>在目标位置上点击鼠标</tt></td></tr>
<tr><td>         </td><td width=20><td><tt>鼠标点击on the 第二个元素 to be moved</tt></td></tr>
<tr><td>         </td><td width=20><td><tt>etc.</tt></td></tr>
</table>
<p>
这个例子也解释了 the meaning of the 重复的点 for 命令 with 鼠标点击。
<p>
对于程序来说，鼠标的每次点击都是一个坐标的输入。如果坐标以文本输入，通过键盘的输入必须如下：
<pre>
(x y)
</pre>
x 和 y 是用 GRID 命令选择的单位的数字。以文本作为输入 主要为脚本文件所需。<br>
如果单位与用 GRID 命令所选的不同 a unit otherthan the one 所选的 with the GRID 命令 shall be used，它可以被追加到给定的坐标，比如
<pre>
(100mil 200mil)
</pre>
允许的单位为 <tt>mm</tt>、<tt>mic</tt>、<tt>mil</tt> 以及 <tt>in</tt>。为 x 和 y 使用不同的单位是可能的。<br>
特殊的坐标
<pre>
(@)
</pre>
可以用于引用绘图窗口内鼠标光标的当前位置。例如，输入
<pre>
MOVE R1 (@)
</pre>
将会移动名为 R1 的部件放置到鼠标当前做指向的位置。
<p>
任意组合 of the 以下 修饰符s may follow the 左大括号 以便模拟一个特定的按键 that is 按住 held pressed with the “鼠标点击” 或 to 改变坐标类型：
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>&gt;</tt></td><td width=20><td>鼠标右键单击</td></tr>
<tr><td><tt>A   </tt></td><td width=20><td>Alt 键</td></tr>
<tr><td><tt>C   </tt></td><td width=20><td>Ctrl 键</td></tr>
<tr><td><tt>P   </tt></td><td width=20><td>极坐标（相对于 <a href=#64>mark</a>, x 为半径, y 为以度为单位的角度，逆时针)</td></tr>
<tr><td><tt>R   </tt></td><td width=20><td>相对坐标（相对于 <a href=#64>mark</a>）</td></tr>
<tr><td><tt>S   </tt></td><td width=20><td>Shift 键</td></tr>
</table>
例如，输入
<pre>
(CR&gt; 1 2)
</pre>
会导致一次相对于 <a href=#64>mark</a> 的 (1&nbsp;2) 的“鼠标右键单击”, with the Ctrl 键 按住 (当然 what happens with 这种输入 将依赖于实际的命令）。请注意，如果当前没有定义 mark，坐标 with <tt>R</tt> 或 <tt>P</tt> 将 be 相对于 the 绘图的原点。同样，the 修饰符 字符对于大小写不敏感，它们的顺序 不 matter and there 不 have to be a blank 在它们与第一个坐标数字之间。所以上述例子也可写做 <tt>(r&gt;c1&nbsp;2)</tt>。作为 "极坐标" 输入的数值会被 存储 internally as the 相应的（x&nbsp;y）坐标。
<p>
作为以文字输入坐标的例子，我们假定您希望为电路板外框输入精确的尺寸：
<pre>
GRID 1 MM;
CHANGE LAYER DIMENSION;
WIRE 0 (0 0) (160 0) (160 100) (0 100) (0 0);
GRID LAST;
</pre>
<h2>十进制数</h2>
当在编辑器窗口的命令行中，或在对话框输入域中输入十进制数，如果您的本地设置允许，您可以用逗号作为小数分隔符（比如 <tt>12,34</tt>）。不过，在编写脚本或 ULP that 返回 EAGLE 命令 通过 <tt>exit()</tt> 函数，您应该始终用“点”作为小数分隔符（比如 <tt>12.34</tt>），因为不这样的话，您的脚本或 ULP 可能无法在其它系统上工作。一般来说，推荐始终用“点”作为小数分隔符。
<h2>分号</h2>
分号（“;”）用于终止命令。如果选项数量少于最大可能的数量，则命令需要用分号来终止。
例如，命令
<pre>
WINDOW;
</pre>
重绘绘图窗口，而
<pre>
WINDOW FIT
</pre>
缩放以使整个绘图适合绘图窗口。这里不需要分号，因为很明显，命令是完整的。


<a name=29>
<h1>ADD</h1>
<dl>
<dt>
<b>功能</b>
<dd>
添加元素到绘图中。<br>
添加符号到元件中。
<dt>
<b>语法</b>
<dd>
<tt>ADD package_name[@library_name] [name] [orientation] &#149;..</tt><br>
<tt>ADD device_name[@library_name]  [name [gate]] [orientation] &#149;..</tt><br>
<tt>ADD symble_name                 [name] [options] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 镜像元件。<br>
<mb>Right</mb> 旋转元件。<br>
<mb>Shift+Right</mb> 反转旋转方向。
</dl>
<b>另请参阅</b> <a href=#103>UPDATE</a>，<a href=#104>USE</a>，<a href=#59>INVOKE</a>
<p>
ADD 命令从激活的元件库 fetches a 电路符号（单元）或封装  并放进绘图。
<p>
During 元件定义 the ADD 命令 fetches a 符号 into the device.
<p>
通常您 点击 ADD 命令 and 选择封装或符号 from the 菜单 which opens。必要的话，参数可以通过键盘输入。
<p>
如果 <tt>device_name</tt> 包含通配符（<tt>'*'</tt> 或 <tt>'?'</tt>），并且有多个元件匹配 the 模式，会打开 ADD 对话框，指定的元件可以从列表中选择。请注意，ADD 对话框中的 <i>描述</i> 复选框 将被取消选中 after 任何 ADD 命令 with a <tt>device_name</tt> has been 在命令行中给定，无论它是否包含通配符。这是因为在命令行中输入的 <tt>device_name</tt> 只搜索元件名称，不在描述之中。
<p>
封装或符号用左键放置，用右键旋转。在放置后，另一个副本立即悬（附）在光标上。
<p>
如果绘图中已经有了个相同名称(同一个库内)的元件或封装，并且在原始的对象已添加之后，元件库被修改过，将自动地启动<a href=#103>元件库更新</a>，并且您将被询问是否绘图中的对象要用它们的新版本被替换。
<b>请注意：您始终应该在元件库的更新执行之后运行 <a href=#47>设计规则检查</a>（DRC）及<a href=#49>电气规则检查</a>（ERC）！</b>
<h2>Fetching a 封装或符号 into a 绘图</h2>
<h3>通配符</h3>
ADD 命令可以 be used with 通配符 (<tt>'*'</tt> 或 <tt>'?'</tt>) to 查找指定的元件。ADD 对话框提供一个匹配元件的树状视图，as well as a preview of the 元件和封装变体。
<p>
直接从指定的元件库添加，命令语法为：
<pre>
ADD devicename@libraryname
</pre>
<tt>devicename</tt> 可以包含通配符，<tt>libraryname</tt> 可以是明文的元件库名称（如 "ttl" 或 "ttl.lbr"）或者完整的文件名（如 "/home/mydir/myproject/ttl.lbr" 或 "../lbr/ttl"）。在文件名中存在空格的情况下，整个表达式必须用单引号括起来（比如 ADD 'DEV1A@/home/my dir/ttl.lbr'）。
<h3>名称</h3>
package_name, device_name 或 symbol_name 参数是存储在元件库中的封装、元件或符号之下的名称。通常从菜单选择。The name 参数 is the name which the 元素 is to 获得 in the 绘图。如果 name could be interpreted as an 方向 或 选项，必须用单引号括起来。如果没有明确地给定名称，它将获得一自动地生成的名称。
<p>
例如：
<pre>
ADD DIL14 IC1 &#149;
</pre>
fetches the DIL14 封装 to the board 并命名为 IC1。
<p>
如果原理图中没有给定名称，该单元将获得在元件定义中用<a href=#80>前缀</a>指定的前缀，用一序列的数字扩展（例如 IC1）。
<p>
例如：
<pre>
ADD 7400 &#149; &#149; &#149; &#149; &#149;
</pre>
这将从 7400 型号的元件放置一序列的五个单元。假定前缀定义为 "IC" and that the 单独的单元 within a 7400 have the names A..D，单元 in the 原理图将会命名为 IC1A, IC1B, IC1C, IC1D, IC2A. (如果具有相同前缀的元素已经放置， the counting 将 proceed from the 下一个连续的数字。）参见 <a href=#59>INVOKE</a>。
<p>
当一个对象附在光标上，您可以改变名称 under which it 将 be added to the 绘图。这允许您添加几个同一类型的部件，但用不同的、明确定义的名称：
<p>
例如：
<pre>
ADD CAP C1 &#149; C5 &#149; C7 &#149;
</pre>
<h3>特定的单元</h3>
To fetch a 特定的单元 of a newly added device the 单元的名称 can be 给定的 跟着零件名称：
<p>
例如：
<pre>
ADD 7400 IC1 A &#149;
</pre>
This is mainly useful if a 原理图是通过脚本生成的。请注意，如果添加了一个特定的单元，no 其它单元 with add level MUST 或 ALWAYS 将 be fetched 自动地，并且您将不得不使用 <a href=#59>INVOKE</a> 命令 to invoke 至少 the MUST 单元 （否则 <a href=#49>电气规则检查</a> 将报告 them as missing 遗漏？）。
<h3>Orientation</h3>
这个参数定义了 the 方向 of the 对象 in the 绘图。对象通常用鼠标右键旋转。In <a href=#93>Script</a> 文件 textual 描述s of 该参数 are used:
<p>
<b><tt>[S][M]Rnnn</tt></b>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b><tt>S</tt></b>   </td><td width=20><td>设置 <b>S</b>pin 标志, which 禁止 保持文字可读 from the 绘图的底部或右边（仅在 PCB 图的上下文中可用）</td></tr>
<tr><td><b><tt>M</tt></b>   </td><td width=20><td>设置 <b>M</b>irror 标志, which 镜像对象 相对于 Y 轴</td></tr>
<tr><td><b><tt>Rnnn</tt></b></td><td width=20><td>设置 <b>R</b>otation to the 给定的值，which may be in the 范围 <tt>0.0</tt>...<tt>359.9</tt> (at a 分辨率 of 0.1 度) in a board 上下文, 或 <tt>0</tt>, <tt>90</tt>, <tt>180</tt> 以及 <tt>270</tt> 之一 in a 原理图上下文 (angles may be 给定的 as 负值s, which 将 被转换为相应的正值）</td></tr>
</table>
<p>
关键字母 <b><tt>S</tt></b>、<b><tt>M</tt></b> 以及 <b><tt>R</tt></b> 可以大写或小写给定，并且必须至少 <b><tt>R</tt></b> 有一个数字跟随。
<p>
如果 <b>M</b>irror 标志 is set in an 元素 as well 比如 a text within the 元素的封装, they cancel each other out. 同样适用于 <b>S</b>pin 标志.
<p>
例：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>R0 </td><td width=20><td>不旋转</td></tr>
<tr><td>R90    </td><td width=20><td>逆时针旋转 90&deg;</td></tr>
<tr><td>R-90   </td><td width=20><td>顺时针旋转 90&deg;（将会被转换为 270&deg;）</td></tr>
<tr><td>MR0    </td><td width=20><td>相对于 Y 轴镜像</td></tr>
<tr><td>SR0    </td><td width=20><td>spin texts</td></tr>
<tr><td>SMR33.3</td><td width=20><td>逆时针旋转 33.3&deg;，镜像mirrored and spin texts</td></tr>
</table>
<p>
缺省值：R0
<p>
<pre>
ADD DIL16 R90 (0 0);
</pre>
在坐标（0 0）处逆时针旋转 90 度，放置一个 16 脚的 DIL 封装。
<h3>错误消息s</h3>
An 错误消息 appears 如果一个单元被 fetched from a 没有完整定义的的元件（参见 <a href=#34>BOARD</a> 命令）。这可以用“<a href=#94>SET</a> CHECK_CONNECTS OFF;”命令避免。当心：BOARD 命令将执行该检查 in any case. 关闭它 is only sensible if no pcb is to be made.
<h2>Fetch 符号 into Device</h2>
在元件定义过程中，ADD 命令 fetches a 以前定义的符号 into the device. 两个参数（swaplevel 与 addlevel）are possible, 并且可以以任何顺序输入。Both can be 预置 and changed with the <a href=#36>CHANGE</a> 命令。用 ADD 命令输入的值  is also retained as a 默认值。
<h3>Swaplevel</h3>
swaplevel 为一整数，适用的规则如下：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>0:  </td><td width=20><td>符号（单元）不能与原理图中其它的交换。</td></tr>
<tr><td>&gt;0 </td><td width=20><td>符号（单元）可以与原理图中任何其它相同类型的具有相同的 swaplevel 的符号交换（包括在不同的元件中交换）。</td></tr>
</table>
<p>
缺省值：0
<h3>Addlevel</h3>
The 以下 possibilities are available for 该参数：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>Next</tt>   </td><td width=20><td>如果一个元件的单元多于一个, the 符号s are 取入到 the 原理图 with Addlevel Next.</td></tr>
<tr><td><tt>Must</tt>   </td><td width=20><td>如果 任何符号 from a device is 取入到 the 原理图，那么用 Addlevel Must 定义的符号必须 也 appear。这是自动发生的。它无法被删除，直到元件中的其它所有符号已被删除。如果 the only 符号s remaining from a device are Must-符号s，则 DELETE 命令将删除整个元件。</td></tr>
<tr><td><tt>Always</tt> </td><td width=20><td>Like Must, 尽管 a 符号 with Addlevel 始终可以被删除ed and 带回进 into the 原理图 with <a href=#59>INVOKE</a>.</td></tr>
<tr><td><tt>Can</tt>    </td><td width=20><td>如果一个元件包含 Next-gates, then Can-gates are only fetched if 明确地 called with INVOKE. A 符号 with Addlevel Can is only then 取入到 the 原理图 with ADD 如果元件仅包含 Can-gates and Request-gates.</td></tr>
<tr><td><tt>Request</tt></td><td width=20><td>该属性 is usefully applied to 元件的电源符号。Request-gates 只能被明确地 取入到 the 原理图 (INVOKE) and are not internally counted. The effect of this is that in devices with 只有一个单元及一个电压供电符号，单元名称 is not added to the 零件名称。In the case of a 7400 with 四单元（加上电源供电）the 单独的单元 in the 原理图 are called, 例如, IC1A, IC1B, IC1C 以及 IC1D。68000 只有一个 <i>Gate</i>, 处理器符号, might on the 其它hand be called IC1, 因为 它的 separate 电压供电符号不作单元计算。</td></tr>
</table>
<p>
例如：
<pre>
ADD PWR 0 REQUEST &#149;
</pre>
fetches the PWR 符号（例如供电引脚符号），and 定义了 a Swaplevel of 0（不可互换） and the Addlevel <i>Request</i> for it.


<a name=30>
<h1>ARC</h1>
<dl>
<dt>
<b>功能</b>
<dd>
绘制一圆弧 of 可变的 直径，宽度，和长度。
<dt>
<b>语法</b>
<dd>
<tt>ARC ['signal_name'] [CW | CCW] [ROUND | FLAT] [width] &#149; &#149; &#149;</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选层。<br>
<mb>Right</mb> 改变方向。
</dl>
<b>另请参阅</b> <a href=#36>CHANGE</a>，<a href=#109>WIRE</a>，<a href=#37>CIRCLE</a>
<p>
ARC 命令，followed by 三次鼠标点击 on a 绘图，绘制一圆弧 of 定义的宽度。第一个点定义了圆弧上的一个点，the second 它的直径。输入第二个坐标 减小s the circle to a 半圆, while the 右键 改变方向 from 第一个 to 第二个点。Entry of a 第三个坐标 truncates the 半圆 to an arc extending to a point defined by the 交点 of the 圆周 and a line between the 第三个点 and the 圆弧中心。
<p>
参数 CW 和 CCW 允许您定义弧的方向（顺时针或逆时针）。ROUND 和 FLAT 分别定义圆弧端部是圆的还是平的。
<h2>信号名称</h2>
<tt>signal_name</tt> 参数 is intended mainly to 被用于脚本文件 that 读入生成的数据。如果给定了 <tt>signal_name</tt>，圆弧将 be added to that 信号 and 将不执行自动地检查。<br>
<b>使用该功能时，应特别注意它的使用，因为如果连接了不同的信号，它会导致短路。请运行一次该特性应用于This feature should be used with great care because it could result in short 电路s if an arc is placed in a way that it 将 连接不同的信号。请运行一次 <a href=#47>设计规则检查</a> after 在使用 ARC 命令 with the <tt>signal_name</tt> 参数!</b>
<h2>线宽</h2>
参数 "width" 定义了所绘制的线的粗细。它可以用下面的命令修改或预先定义：
<pre>
CHANGE WIDTH width;
</pre>
调整的宽度 is identical to the 线宽 for wires.
<p>
0 或 360 度的角度，或者 0 的弧度的弧是不被接受的。
<p>
文本输入的例子：
<pre>
GRID inch 1;
ARC CW (0 1) (0 -1) (1 0);
</pre>
产生一个以原点为中心的 90 度的弧。


<a name=31>
<h1>ASSIGN</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    修改按键分配。
<dt>
<b>语法</b>
<dd>
<tt>ASSIGN</tt><br>
<tt>ASSIGN function_key command..;</tt><br>
<tt>ASSIGN function_key;</tt>
<p>
<tt>function_key = modifier+key</tt><br>
<tt>modifier     = </tt>任意组合 of <tt>S</tt> (Shift), <tt>C</tt> (Control), <tt>A</tt> (Alt) and <tt>M</tt> (Cmd, Mac OS X only)<br>
<tt>key          = F1..F12, A-Z, 0-9, BS</tt>（退格键）
</dl>
<b>另请参阅</b> <a href=#93>SCRIPT</a>，<a href=#19>键盘及鼠标</a>
<p>
ASSIGN 命令可以用于定义 the meaning of the 功能键 <tt>F1</tt>～<tt>F12</tt>字母键 <tt>A</tt>～<tt>Z</tt>，the (upper 上档) 数字键 <tt>0</tt>～<tt>9</tt> 和<tt>退格</tt>键 (each also in 组合 with 变换键）。
<p>
不带参数的 ASSIGN 命令在一对话框中显示当前的按键分配，which 也允许您修改这些设置。
<p>
按键可以分配给单个命令或多个命令。分配的命令序列应该用单引号括起来。
<p>
如果 <tt>key</tt> 为 <tt>A-Z</tt> 或 <tt>0-9</tt> 之一，the <tt>modifier</tt> 必须至少包含 <tt>A</tt>, <tt>C</tt> 或 <tt>M</tt>。
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">
<b><tt>M</tt></b> 修饰符只能用于 <b>Mac OS X</b>。
</td></tr></table>
<p>
请注意，任何分配给功能键的特殊操作系统功能将被由 ASSIGN 命令覆写（依赖于操作系统, ASSIGN 可能无法覆写 certain 功能键）。<br>
如果您分配给 a 字母键 together with the 修饰符 <tt>A</tt>，（例如 <tt>A+F</tt>），a 相应的热键 from the 下拉菜单 is 不再有效。
<p>
去除按键的赋值，您可以输入 <tt>ASSIGN</tt> with only the function_key 码，但无命令。
<h2>例子</h2>
<pre>
ASSIGN F7 'change layer top; route';
ASS A+F7 'cha lay to; rou';
ASSIGN C+F10 menu add mov rou ''';''' edit;
ASSIGN CA+R 'route';
</pre>
前面的两个例子效果相同，因为 EAGLE 不仅仅允许命令简写，也允许参数简写（只要它们是明白无误的）。
<p>
这里请注意，比如，"change layer top" 命令是以分号结束的，而非 route 命令。原因是：在第一种情况下，命令已经包含所有必需的参数, 而在第二种情况下，坐标仍必须添加（通常使用鼠标）。因此 ROUTE 命令必须不 be deactivated by a 分号.
<h2>定义命令菜单</h2>
如果您想要给一个按键分配 MENU 命令，MENU 命令中的分隔字符（分号）必须用三对单引号括起来（参见第三个例子）。这个分号将出现在新菜单。
<h2>预置的按键分配</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>F1     HELP</tt> </td><td width=20><td>帮助功能</td></tr>
<tr><td><tt>Alt+F2 WINDOW FIT</tt>     </td><td width=20><td>显示整个绘图</td></tr>
<tr><td><tt>F2     WINDOW;</tt>        </td><td width=20><td>屏幕重绘</td></tr>
<tr><td><tt>F3     WINDOW 2</tt>       </td><td width=20><td>以 2 倍因子放大</td></tr>
<tr><td><tt>F4     WINDOW 0.5</tt>     </td><td width=20><td>以 2 倍因子缩小</td></tr>
<tr><td><tt>F5     WINDOW (@);</tt>    </td><td width=20><td>光标所在位置为新的中心</td></tr>
<tr><td><tt>F6     GRID;</tt>          </td><td width=20><td>栅格开启/关闭</td></tr>
</table>
<p>
更进一步，很多有用的按键分配包含在初始化脚本 eagle.scr 中，并可以被调整为您单独的需求。


<a name=32>
<h1>ATTRIBUTE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    定义零件的属性。
<dt>
<b>语法</b>
<dd>
<tt>ATTRIBUTE name [ 'value' ] [ options ]</tt><br>
<tt>ATTRIBUTE part_name attribute_name</tt><br>
<tt>ATTRIBUTE part_name attribute_name 'attribute_value' [ [ orientation ] &#149; ]</tt><br>
<tt>ATTRIBUTE part_name attribute_name DELETE</tt><br>
<tt>ATTRIBUTE * [ name [ 'value' ] ]</tt><br>
<tt>ATTRIBUTE * name DELETE</tt><br>
<tt>ATTRIBUTE &#149;..</tt>
</dl>
<b>另请参阅</b> <a href=#100>TECHNOLOGY</a>，<a href=#70>NAME</a>，<a href=#105>VALUE</a>，<a href=#97>SMASH</a>，<a href=#101>TEXT</a>
<p>
参见 <a href=#29>ADD</a> 中 <tt>orientation</tt> 的描述。
<p>
An <i>属性</i> is an 任意 组合 of <i>name</i> 和 <i>value</i>，that 可以用于为给定的零件指定任何种类的信息。
<p>
属性 Attributes 可以被定义在元件库中 （对于单独的元件），原理图中（对于实际的部件）或在电路板图中（对于实际的元素）。定义在元件层次的属性 将被用于 每个部件 of that 原理图中的元件类型。在原理图中，额外的属性可以为每个零件定义，and 来自元件的已有的属性可以被新值覆写（如果属性已经定义为<i>变量</i>）。电路板图中的元素具有它对应零件的全部属性，并可以具有它自己更多的属性。
<h2>元件库中的属性</h2>
在元件库中，ATTRIBUTE 命令可以用于定义一个给定的技术工艺变体的属性，请使用语法
<pre>
ATTRIBUTE name [ 'value' ] [ options ]
</pre>
<tt>name</tt> 可以包含任何字母，数字，'_', '#' 以及 '-'，并且可以有任意长度；第一个字符必须不能是 '-', though. Names 被视为对大小写不敏感，所以 PartNo 与 PARTNO 是相同的。<tt>value</tt> 可以包含任何字符，并且必须以单引号括起来。
<p>
有效的 <tt>options</tt> 为：
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>delete</tt>  </td><td width=20><td>从所有技术（工艺）变体中删除给定名称的属性（在这种情形下，必须没有 'value'）。</td></tr>
<tr><td><tt>变量</tt></td><td width=20><td>标识该属性为<i>变量</i>，以便它能在原理图中覆写（这是缺省的）。</td></tr>
<tr><td><tt>constant</tt></td><td width=20><td>在原理图中，标记为 <i>constant</i> 的属性不能被覆写（除非用户坚持）。</td></tr>
</table>
选项可以缩写，并且对大小写不敏感。
<p>
一个已存在的属性可以在 <i>变量</i> 和 <i>常量</i> 之间切换，不需要重复它的值，比如 
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>ATTRIBUTE ABC '123'</tt>   </td><td width=20><td>（缺省的变量）</td></tr>
<tr><td><tt>ATTRIBUTE ABC constant</tt></td><td width=20><td>(ABC retains 它的值 '123')</td></tr>
</table>
如果属性的值被改变，它的 <i>常量/变量</i> 设置不变（除非明确地给定）。
<p>
属性名称 <b>_EXTERNAL_</b> 为外部元件的标记保留（参见 <a href=#74>PACKAGE</a>）。
<p>
某些特殊的属性名称是不允许的，因为它们会干扰已经存在的<a href=#101>文本变量</a>。如果名为 VALUE 的属性已定义，它的值将被用于当在原理图中放置零件时初始化实际的值（in case the 器件 has 'Value On')。
<h2>原理图中的属性</h2>
在原理图中，ATTRIBUTE 命令可以用于为零件分配属性，这种情况下，值 of such an 属性覆写属性的值 with the 相同名称 in the 元件库（如果元件具有这样一个属性并允许覆写）。A part 也可以 be 给定的属性 that are 未定义 in the 元件库 at all.
<p>
选择 ATTRIBUTE 命令并在零件上点击 显示一个对话框 in which 零件的全部属性 are listed 并可以编辑。
<p>
对于一个属性完全的文本定义，可以使用以下语法：
<pre>
ATTRIBUTE part_name attribute_name 'attribute_value' orientation &#149;
</pre>
请注意，在多单元零件的情况下，实际的单元之一（即：“实例”）被选择。当通过鼠标点击选择它时，it is already clear which 单元 is meant，而当通过 part_name 选择它时，应被给定包含零件和单元名的完整名称。While a specific part 只能有一个属性 with a 给定的名称，属性可以被附在任一或全部单元。如果仅仅给定了零件名称，第一个可见的单元将被隐式地选择。
<p>
如果没有给定坐标（并且命令以 <tt>';'</tt>结束），该行为依赖于该零件（或者在元件中，或者在原理图中）是否已存在给定的属性。如果属性已经存在，则只改变它的值。如果尚不存在，一个新的属性 with 给定的名称和值将被放在所选零件的单元的原点。
<p>
删除部件的一个属性，可以使用命令
<pre>
ATTRIBUTE part_name attribute_name DELETE
</pre>

<p>
当通过命令行或脚本定义属性时，用 <a href=#36>CHANGE</a> DISPLAY 命令来定义属性（名称、值, both 或 none of 这些) 的哪一部分应该是可见的。
<h2>电路板图中的属性</h2>
在电路板中，属性可以用 ATTRIBUTE 命令分配（赋值）给元素，必须与原理图的相同，默认情况下，元素具有全部属性 that are 定义d for 它们的零件 in the 原理图 (and their device in the 元件库）。对于一个给定的元素/零件对，具有相同名称的属性将始终具有相同的值（通过<a href=#362>正向&amp;反向编序</a>）。元素可以具有额外的不呈现在原理图或元件库的属性。
<h2>全局属性</h2>
全局属性可以被定义在 PCB 图和原理图中 通过使用 <tt>'*'</tt> 作为零件名称（which implies that this 属性 applies to <i>all</i> parts）。此外，全局属性可以通过菜单选项 “编辑/全局属性...” 定义。PCB 图和原理图 are 处理d separately and are 无连接 via <a href=#362>正向&amp;反向编序</a>.
<p>
Such an 属性可以是 比如 绘图作者，并可以用于绘图的图框的标题栏。It 将 be 显示在每个原理图的图纸 that has a 绘图框 that 包含相同名称的<a href=#101>文本变量</a>。
<h2>选择层</h2>
不像其它命令（比如 WIRE），ATTRIBUTE 命令 keeps track of 它的上一次使用的层 by 自身. This has the advantage of 确保 that 属性 are 始终绘制进正确的层，无论 what layers 其它命令 draw into. The downside of this is that the usual way of setting the layer in a 脚本, 比如
<pre>
LAYER <i>layer</i>;
WIRE (1 2) (3 4);
</pre>
不工作 here. The layer needs to be 所选的 while the ATTRIBUTE 命令已被激活，which 可以像这样做
<pre>
ATTRIBUTE <i>参数</i>
LAYER <i>layer</i>
<i>more 参数</i>;
</pre>
请注意，ATTRIBUTE 行<b>不</b>以 <tt>';'</tt> 结束，and that the LAYER 命令开始一新的行。<br>
命令
<pre>
ATTRIBUTE
LAYER <i>layer</i>;
</pre>
set the layer to use with subsequent ATTRIBUTE 命令。
<h2>例子</h2>
首先，封装和技术工艺 has to be 所选的 (in case there is more than one)，然后，属性 for that 技术（工艺） can be 定义d:
<pre>
PACKAGE N;
TECHNOLOGY LS;
ATTRIBUTE PartNo '12345-ABC';
ATTRIBUTE Temp '100K' constant;
ATTRIBUTE Remark 'mount manually';
</pre>


<a name=33>
<h1>AUTO</h1>
<dl>
<dt>
<b>功能</b>
<dd>
启动自动布线器
<dt>
<b>语法</b>
<dd>
<tt>AUTO;</tt><br>
<tt>AUTO signal_name..;</tt><br>
<tt>AUTO ! signal_name..;</tt><br>
<tt>AUTO &#149;..;</tt><br>
<tt>AUTO FOLLOWME</tt><br>
<tt>AUTO LOAD|SAVE filename;</tt>
</dl>
<b>另请参阅</b> <a href=#96>SIGNAL</a>，<a href=#91>ROUTE</a>，<a href=#109>WIRE</a>，<a href=#83>RATSNEST</a>，<a href=#94>SET</a>
<p>
AUTO 命令激活集成的<a href=#134>自动布线器</a>。如果信号名已指定或用鼠标选择了信号，则只有这些信号被布线。不带参数的命令将尝试对所有信号进行布线。If a "!" 字符 is specified 所有信号 are routed except the 信号 跟着 the "!" 字符 The "!" 字符必须是第一个参数 and must show up only 一旦。
<p>
<tt>载入</tt>和<tt>保存</tt>选项可以用于载入自动布线器参数 from 或 save them to the 给定的 文件。如果 <i>filename</i> 没有扩展名 <tt>".ctl"</tt> 它会被自动追加。
<p>
不带任何参数（或者没有给定终止符 <tt>';'</tt>），AUTO 命令打开一个对话框 in which the 参数 that 控制布线算法 can be configured。特殊的选项 <tt>FOLLOWME</tt> 打开这个对话框 in a mode where only the 参数 控制 the <a href=#91>Follow-me router</a> can be modified.
<h2>例</h2>
<pre>
AUTO ! GND VCC;
</pre>
每种情况下都需要分号作为终止符号。调整自动布线器控制参数的菜单 opens 如果您从命令菜单选择 AUTO 或从键盘输入 AUTO（跟着回车键）。
<h2>通配符</h2>
如果给定了 <tt>signal_name</tt> 参数，字符 <tt>'*'</tt>, <tt>'?'</tt> 和 <tt>'[]'</tt> are <i>通配符</i> and have the 以下含义：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>*</tt>    </td><td width=20><td>匹配任意数量的任何字符</td></tr>
<tr><td><tt>?</tt>    </td><td width=20><td>精确匹配单个字符</td></tr>
<tr><td><tt>[...]</tt></td><td width=20><td>匹配在方括号之间的任何字符</td></tr>
</table>
<p>
如果 any of 这些字符 shall be matched 精确 as such, 它必须用方括号括起来。例如, <tt>abc[*]ghi</tt> 将会匹配 <tt>abc*ghi</tt>，而非 <tt>abcdefghi</tt>。
<p>
字符范围 can be 给定的 as <tt>[a-z]</tt>, which results in 任何字符 in the 范围 <tt>'a'</tt>...<tt>'z'</tt>.
<h2>Polygons</h2>
自动布线器启动后，会计算所有 <a href=#79>Polygons</a>。
<h2>Protocol 文件</h2>
A protocol file (name.pro) 是自动生成的。
<h2>PCB 尺寸</h2>
自动布线器 puts a 矩形 around  电路板图中的所有对象 并把这个矩形的尺寸作为布线区域。尺寸标注层中的 Wires 为自动布线器的边框线。这意味着您可以 delimit the 布线区域 with closed lines 绘制进该层 使用 WIRE 命令。
<p>
In practice 您绘制电路板外框 into the 尺寸标注层er 用 WIRE 命令，并在该区域内放置元件。
<h2>信号</h2>
信号用 EAGLE 的 SIGNAL 命令定义，多边形，and wires drawn onto the Top, Bottom, and ROUTE2...15 layers are recognized by the 自动布线器。
<h2>限制区域</h2>
tRestrict, bRestrict 和 vRestrict 层中的对象被看作 限制区域 for the 顶层和底层 and for 过孔 分别.
<p>
如果您要自动布线器不使用某个层，选择 "N/A" in the preferred direction field.
<h2>取消</h2>
如果您通过点击 STOP 按钮取消自动布线器，任何尚未布线的鼠线鼠线, are 不 自动重新计算。用 <a href=#83>RATSNEST</a> 命令进行。


<a name=34>
<h1>BOARD</h1>
<dl>
<dt>
<b>功能</b>
<dd>
将原理图转换到 PCB 图。
<dt>
<b>语法</b>
<dd>
<tt>BOARD [ grid ]</tt>
</dl>
<b>另请参阅</b> <a href=#48>EDIT</a>
<p>
命令 BOARD 用于将原理图转换为 PCB 图。
<p>
如果 PCB 图已经存在，它会被载入到 PCB 图编辑器。
<p>
如果 PCB 图不存在，会询问您是否建立新的电路板图。如果给定了 <tt>grid</tt>，电路板上的零件将被放置进 placed in the 给定的 raster, 比如
<pre>
BOARD 5mm
</pre>
which 将放置零件 in a 5 millimeter raster （默认为 50mil）。数值必须给定单位，允许的最大值为 10mm。
<p>
BOARD 命令将 never 覆写已存在的 PCB 图文件。为建立一个新的 PCB 图文件，如果已经有一个该名称的文件，您必须先 <a href=#86>删除</a> 该文件。
<h2>从原理图建立 PCB 图</h2>
The 第一次 您编辑 PCB 图，程序检查是否存在同一目录下相同名称的原理图，并给您选择从哪个原理图建立 PCB 图。<br>
如果您已经打开了原理图窗口并想建立 PCB 图，只需在编辑器窗口的命令行中输入：
<pre>
edit .brd
</pre>

<p>
原理图文件（name.sch）的所有相关数据将被转换到 PCB 文件（name.brd）。新的电路板图是自动载入的 as an empty card with a size of 160x100mm (<a href=#368>Light edition</a>: 100x80mm)。所有封装和连接显示在电路板的左边。供电引脚已经连接（参见 <a href=#77>PIN</a> 命令）。
<p>
如果您需要电路板外框不同于默认生成的，简单地删除 the 各自的 lines and 用 <a href=#109>WIRE</a> 命令绘制您自己的外框 into the <i>Dimension</i> 层。推荐的线宽为 0。
<p>
下面的情况是无法生成 PCB 图文件的:
<ul>
<li>如果 there are 单元 in the 原理图 from a device for which 没有封装已被定义（错误消息: "device name has no 封装）。Exception: if there are only 引脚 with Direction "Sup"（供电符号） 
<li>if there are 单元 in the 原理图 from a device for which not 所有引脚 have been assigned to 相关的焊盘 of a 封装 (错误消息: "元件名称具有未连接的引脚"）。异常：device without 引脚 (e.g. frames)
</ul>


<a name=35>
<h1>BUS</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在原理图中绘制总线。
<dt>
<b>语法</b>
<dd>
<tt>BUS [bus_name] &#149; [curve | @radius] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Right</mb> 改变导线弯折样式（参见 <a href=#94>SET Wire_Bend</a>）。<br>
<mb>Shift+Right</mb> 反转弯折样式的切换方向。<br>
<mb>Ctrl+Right</mb> 在相应的弯折样式之间切换。
</dl>
<b>另请参阅</b> <a href=#71>NET</a>，<a href=#70>NAME</a>，<a href=#94>SET</a>
<p>
BUS 命令用于在原理图的总线层上绘制总线连接。Bus_name 具有以下形式：
<pre>
SYNONYM:partbus,partbus,..
</pre>
其中 SYNONYM 可以为任意名称。Partbus 或者为一简单的网络名称，或者是以下形式的总线名称范围：
<pre>
Name[LowestIndex..HighestIndex]
</pre>
其中，以下条件必须满足：
<p>
0 &lt;= LowestIndex &lt;= HighestIndex &lt;= 511
<p>
如果名称 is used with a 范围，则名称必须不能以数字结束，因为哪个数字属于 Name，哪个属于范围会变得不清楚。
<p>
如果一个总线导线放置在已经有了另一个总线导线的点上，当前的总线导线将结束于该点。这个功能可以用“<tt>SET AUTO_END_NET OFF;</tt>”禁止，或通过取消选择“选项/设置/杂项/自动结束网络和总线”。
<p>
如果给定了 <i>curve</i> 或 <i>@radius</i> 参数，一个圆弧可以被绘制为总线的一部分（参见 <a href=#109>WIRE</a> 命令中的详细描述）。
<h2>总线名称的例子</h2>
<pre>
A[0..15]
RESET
DB[0..7],A[3..4]
ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]
</pre>
如果没有对总线名称命名，会自动分配一个名称：B$1。这个名称可以在任何时候用 NAME 命令改变。
<p>
总线使用的线宽可以定义d 例如 with
<pre>
SET Bus_Wire_Width 40;
</pre>
to be 40 mil。（缺省值：30 mil）。
<h2>反相的信号</h2>
如果反相的信号 ("active low"）之前有个感叹号（<tt>'!'</tt>），它的名称可以以上划线显示 ，比如
<pre>
  ATBUS:A[0..31],B[0..31],!RESET,CLOCK,IOSEL[0..1]
</pre>
which 会导致
<pre>
                          _____
  ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]
</pre>
您可以在 <a href=#101>TEXT</a> 命令的描述中找到更多关于它的细节。


<a name=36>
<h1>CHANGE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
改变参数。
<dt>
<b>语法</b>
<dd>
<tt>CHANGE option &#149; &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> 改变组的参数。
</dl>
CHANGE 命令用于改变或预置对象的属性。对象 are clicked on with the mouse after the 期望的参数 have been 所选的 from the CHANGE 命令菜单 或 已从键盘键入。
<p>
参数调整ed with the CHANGE 命令 remain as 预置 properties for 对象 added later.
<p>
所有的值 in the CHANGE 命令 are used 依照实际的栅格单位。
<h2>改变组</h2>
当使用 CHANGE 命令 with a 组, 组 is 第一个 identified with the <a href=#55>GROUP</a> 命令 before 输入 CHANGE 命令 with 适当的参数。鼠标右键 is then 用于执行改变。
<h2>可以改变什么？</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>层                   </td><td width=20><td><tt>CHANGE LAYER name | number</tt></td></tr>
<tr><td>文字                 </td><td width=20><td><tt>CHANGE TEXT [ text ]</tt></td></tr>
<tr><td>文字高度             </td><td width=20><td><tt>CHANGE SIZE value</tt></td></tr>
<tr><td>文字厚度             </td><td width=20><td><tt>CHANGE RATIO ratio</tt></td></tr>
<tr><td>文字行距             </td><td width=20><td><tt>CHANGE LINEDISTANCE value</tt></td></tr>
<tr><td>文字字体             </td><td width=20><td><tt>CHANGE FONT VECTOR | PROPORTIONAL | FIXED</tt></td></tr>
<tr><td>文字对齐             </td><td width=20><td><tt>CHANGE ALIGN BOTTOM | LEFT | CENTER | TOP | RIGHT</tt></td></tr>
<tr><td>线宽                 </td><td width=20><td><tt>CHANGE WIDTH value</tt></td></tr>
<tr><td>线型                 </td><td width=20><td><tt>CHANGE STYLE value</tt></td></tr>
<tr><td>Arc cap              </td><td width=20><td><tt>CHANGE CAP ROUND | FLAT</tt></td></tr>
<tr><td>焊盘形状             </td><td width=20><td><tt>CHANGE SHAPE SQUARE | ROUND | OCTAGON | LONG | OFFSET</tt></td></tr>
<tr><td>Pad/via/smd 标志     </td><td width=20><td><tt>CHANGE STOP | CREAM | THERMALS | FIRST OFF | ON</tt></td></tr>
<tr><td>焊盘/过孔直径        </td><td width=20><td><tt>CHANGE DIAMETER diameter</tt></td></tr>
<tr><td>Pad/via/hole drill   </td><td width=20><td><tt>CHANGE DRILL value</tt></td></tr>
<tr><td>过孔层               </td><td width=20><td><tt>CHANGE VIA from-to</tt></td></tr>
<tr><td>Smd 尺寸             </td><td width=20><td><tt>CHANGE SMD width height</tt></td></tr>
<tr><td>Smd roundness        </td><td width=20><td><tt>CHANGE ROUNDNESS value</tt></td></tr>
<tr><td>Pin 参数             </td><td width=20><td><tt>CHANGE DIRECTION NC | IN | OUT | IO | OC | HIZ | SUP | PAS | PWR</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE FUNCTION NONE | DOT | CLK | DOTCLK</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE 长度 POINT | SHORT | MIDDLE | LONG</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE VISIBLE BOTH | PAD | PIN | OFF</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE SWAPLEVEL number</tt></td></tr>
<tr><td>多边形（覆铜）参数   </td><td width=20><td><tt>CHANGE THERMALS OFF | ON</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE ORPHANS OFF | ON</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE ISOLATE distance</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE POUR SOLID | HATCH | CUTOUT</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE RANK value</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE SPACING distance</tt></td></tr>
<tr><td>Gate 参数            </td><td width=20><td><tt>CHANGE SWAPLEVEL number</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE ADDLEVEL NEXT | MUST | ALWAYS | CAN | REQUEST</tt></td></tr>
<tr><td>网络分类             </td><td width=20><td><tt>CHANGE CLASS number | name</tt></td></tr>
<tr><td>封装                 </td><td width=20><td><tt>CHANGE PACKAGE part_name [device_name] | 'device_name' [part_name]</tt></td></tr>
<tr><td>工艺                 </td><td width=20><td><tt>CHANGE TECHNOLOGY part_name [device_name] | 'device_name' [part_name]</tt></td></tr>
<tr><td>属性显示             </td><td width=20><td><tt>CHANGE DISPLAY OFF | VALUE | NAME | BOTH</tt></td></tr>
<tr><td>Frame 参数           </td><td width=20><td><tt>CHANGE COLUMS value</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE ROWS value</tt></td></tr>
<tr><td>                     </td><td width=20><td><tt>CHANGE BORDER NONE | BOTTOM | RIGHT | TOP | LEFT | ALL</tt></td></tr>
<tr><td>标签                 </td><td width=20><td><tt>CHANGE XREF OFF | ON</tt></td></tr>
<tr><td>尺寸标注类型         </td><td width=20><td><tt>CHANGE DTYPE PARALLEL | HORIZONTAL | VERTICAL | RADIUS | DIAMETER | ANGLE | LEADER</tt></td></tr>
<tr><td>尺寸标注单位         </td><td width=20><td><tt>CHANGE DUNIT [MIC | MM | MIL | INCH] [OFF | ON] [precision]</tt></td></tr>
<tr><td>尺寸标注线           </td><td width=20><td><tt>CHANGE DLINE width [ extension_width [ extension_LENGTH [ extension_offset ]]] (extension values can be set to AUTO; unchanged preceding values can be skipped with '-')</tt></td></tr>
</table>


<a name=37>
<h1>CIRCLE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为绘图添加圆弧。
<dt>
<b>语法</b>
<dd>
<tt>CIRCLE &#149; &#149;.. [center, circumference]</tt><br>
<tt>CIRCLE width &#149; &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选择层。
</dl>
<b>另请参阅</b> <a href=#36>CHANGE</a>，<a href=#109>WIRE</a>
<p>
CIRCLE 命令用于建立圆弧。在 tRestrict, bRestrict，以及 vRestrict 层中定义的受限区域中的圆弧应该用宽度 0 来定义。
<p>
参数 width 定义了圆弧的圆周宽度，与  WIRE 命令中用的参数相同。宽度可以用命令
<pre>
CHANGE WIDTH width;
</pre>
修改。其中 <i>width</i> 是以当前 the 期望的值 in the 当前单位。
<p>
宽度定义为 0 的圆弧将被填充。
<h2>例</h2>
<pre>
GRID inch 1;
CIRCLE (0 0) (1 0);
</pre>
生成一个 1 inch 半径且中心在原点的圆弧。


<a name=38>
<h1>CLASS</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义、使用网络分类。
<dt>
<b>语法</b>
<dd>
<tt>CLASS</tt><br>
<tt>CLASS number|name</tt><br>
<tt>CLASS number [ name [ width [ clearance [ drill ] ] ] ] [ number:clearance .. ]</tt>
</dl>
<b>另请参阅</b> <a href=#136>设计规则</a>，<a href=#71>NET</a>，<a href=#96>SIGNAL</a>，<a href=#36>CHANGE</a>
<p>
CLASS 命令用于定义或使用网络分类。
<p>
如果没有参数，则提供一个可以定义网络分类的对话框。
<p>
如果只给定了 <tt>number</tt> 或 <tt>name</tt>，网络分类 with the 给定的号码或名称 is selected and 将被用于 subsequent NET and SIGNAL 命令。
<p>
如果 <tt>number</tt> 和 <tt>name</tt> 均已给定，网络分类 with the 给定的 number 将 be 分配所有 the 跟着 values and 将 也被用于 subsequent NET 和 SIGNAL 命令。 如果 any of the 参数 以下 <tt>name</tt> 被省略，the 网络分类 将 keep 它的 各自的 value.
<p>
如果 <tt>number</tt> 为负，网络分类 with the 绝对值 of <tt>number</tt> 将 be cleared。缺省的网络分类 <tt>0</tt> 无法被清除。
<p>
网络分类的名称对大小写不敏感，所以 SUPPLY 将与 Supply 或 SuPpLy 相同。
<p>
在一个绘图中使用多个网络分类 增加 自动布线器需要进行作业的时间。Therefore it makes sense to use only as few 网络分类es as necessary (only the number of 网络分类es actually used by 网络或信号 count here, not the number of 定义d 网络分类es).
<p>
为了避免冲突，当 CUT/PASTEing between 绘图s it makes sense to 定义 the same 网络分类es under the same numbers in 所有绘图。
<p>
自动布线器 处理 信号 sorted by their 总的宽度需求（宽度加上间隙），starting with 那些 that require the most space. The bus router only routes 信号 with 网络分类 <tt>0</tt>.
<p>
现有的网络/信号的网络分类可以用 CHANGE 命令修改。
<h2>Width</h2>
参数 <i>width</i> 定义了该网络分类中所有对象的最小宽度  must have.
<h2>Clearance</h2>
参数 <i>clearance</i> 定义了这个网络分类中的不同信号的对象与其它网络分类中的对象之间的最小间隙。
<h2>Drill</h2>
参数 <i>drill</i> 定义了最小的钻孔尺寸 that 这个网络分类中的所有对象 must have （仅适用于对象 that actually have a drill 参数，like 焊盘和过孔）。
<h2>网络分类之间的间隙</h2>
如果间隙以形式 <tt>number:clearance</tt> 给定，它定义了这个网络分类中的信号和给定的 <tt>number</tt> 网络分类中的信号之间的最小间隙。命令
<pre>
CLASS 3 1:0.6mm 2:0.8mm
</pre>翻译有问题
定义了网络分类中信号 1 和 3 之间的最小间隙 0.6mm，and one of 0.8mm between 网络分类 2 和 3 的信号之间。请注意，<tt>number:clearance</tt> 中的 numbers 必须是小于或等于网络分类自身的号码（上面的例子中的 <tt>'3'</tt>），所以
<pre>
CLASS 3 1:0.6mm 2:0.8mm 3:0.2mm
</pre>
也是有效的，而
<pre>
CLASS 3 1:0.6mm 2:0.8mm 3:0.2mm 4:0.5mm
</pre>
是不允许的。


<a name=39>
<h1>CLOSE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
关闭编辑器窗口。
<dt>
<b>语法</b>
<dd>
<tt>CLOSE</tt>
</dl>
<b>另请参阅</b> <a href=#72>OPEN</a>，<a href=#48>EDIT</a>，<a href=#110>WRITE</a>，<a href=#93>SCRIPT</a>
<p>
CLOSE 命令用于关闭编辑器窗口。如果您正在编辑的绘图已被修改，将会提示您是否要保存它。
<p>
该命令主要用于脚本文件。


<a name=40>
<h1>CONNECT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为引脚分配焊盘。
<dt>
<b>语法</b>
<dd>
<tt>CONNECT</tt><br>
<tt>CONNECT [ ALL | ANY ] gate_name.pin_name pad_name..</tt><br>
<tt>CONNECT [ ALL | ANY ] pin_name pad_name..</tt>
</dl>
<b>另请参阅</b> <a href=#80>前缀</a>，<a href=#72>OPEN</a>，<a href=#39>CLOSE</a>，<a href=#93>SCRIPT</a>
<p>
该命令用在元件编辑模式下，定义的引脚和元件库中相应的封装的焊盘之间的关系。首先，it is necessary to 定义 which 封装 is to 被使用 by means of the PACKAGE 命令。
<p>
如果 CONNECT 命令是无参数调用的，a dialog is presented which 允许您 to interactively assign the 连接.
<h2>只有一个单元的元件</h2>
如果元件只包含一个单元，可以丢弃参数 gate_name，例如：
<pre>
CONNECT gnd 1 rdy 2 phi1 3 !irq 4 nc1 5...
</pre>
（请注意："!" 用于指示反相的数据信号。）
<h2>含有几个单元的元件</h2>
如果几个单元 are present in a device, 参数必须输入 with gate_name, pin_name and pad_name each time。例如：
<pre>
CONNECT A.I1     1  A.I2  2   A.O  3;
CONNECT B.I1     4  B.I2  5   B.O  6;
CONNECT C.I1    13  C.I2  12  C.O 11;
CONNECT D.I1    10  D.I2  9   D.O  8;
CONNECT PWR.gnd  7;
CONNECT PWR.VCC 14;
</pre>
在这种情形下，连接 for 四个 NAND 单元 of a good old 7400 are allocated. The 元件包括五个单元 - A, B, C，D，以及 PWR。单元的输入命名为 I1 和 I2，而输出命名为 O。
<p>
CONNECT 命令 can be repeated as often as required. It may be used with 所有引脚/焊盘 连接 或 with only certain 引脚。每个新的 CONNECT 命令 覆写s the previous conditions for the 相关的引脚。
<p>
请注意 如果您 have 大量的连接 in 一个单个的元件，the CONNECT 命令 works a lot faster if 所有连接 are 给定的 in one single call, like shown in the 例子 below.
<h2>几个焊盘连接到同一引脚</h2>
某些零件，比如功放或 BGA 芯片，可能有几个内部连接的焊盘。This may be done for 较好的散热以允许较高的电流。CONNECT 命令可以处理这些 cases by 简单地列出所有相关的焊盘名称，由空格（and therefore enclosed in 单引号）分隔，比如
<pre>
CONNECT ALL I1 '1 3 5';
CONNECT ANY O1 '2 4 6';
</pre>
在第一个例子中，引脚 <tt>I1</tt> 连接到了 3 个焊盘：<tt>1</tt>，<tt>3</tt> 和 <tt>5</tt>。如果引脚 <tt>I1</tt> 连接到原理图中的网络，所有三个焊盘必须明确地连接到电路板图中的相应信号。<br>
在第二个例子中，关键字 <tt>ANY</tt> 指明焊盘 <tt>2</tt>, <tt>4</tt> 或 <tt>6</tt> 中的任意一个（或者甚至全部）可以连接到该信号。It is even allowed to 用这个内部连接 as a "bridge" by 连接ing 一段 of the 信号 to, say, 焊盘 <tt>2</tt>，while 连接ing the rest of the 信号 to 焊盘 <tt>6</tt>, without any explicit 外部连接 在这两个焊盘之间。当然，当设计ing a 元件库零件 and using <tt>ANY</tt> in a CONNECT 命令，您需要 to be sure that the 零件将能够处理 cross currents 流过它的焊盘。如果 in doubt, use <tt>ALL</tt> (which is the 缺省的 and may be 忽略ted).
<p>
如果引脚名称将与关键字 <tt>ALL</tt> 或 <tt>ANY</tt>冲突，则引脚名称需要用单引号括起来。As soon as one of 这些关键字 appears in a CONNECT 命令，it applies to 所有引脚/焊盘 连接 that follow it, until a 不同的关键字 is seen,比如
<pre>
CONNECT 'A' '1' 'B' '2' ANY 'C' '3 4 5 6' 'D' '7 8' ALL 'E' '9 10 11';
</pre>
<p>
<a href=#83>RATSNEST</a> 和 <a href=#33>AUTO</a> 命令 将 处理 the <tt>ALL</tt> and <tt>ANY</tt> cases 适当的ly.
<p>
In the CONNECT dialog the "Connect" 按钮 在所选的引脚和所选的焊盘之间建立新的连接。There can be 多于超过 one 焊盘 所选的, 这种情况下， 所有这些焊盘将被连接到所选的引脚。使用 Ctrl 和 Shift 键 in the usual way to mark 多于 one 焊盘 as 所选的.<br>
"Append" 按钮 adds the 所选的焊盘 to the 当前的连接.<br>
"Disconnect" 按钮移除所选的连接，并把引脚和焊盘放回它们各自的列表，keeping them 所选的 以便 it is easy to 进行修改。A Disconnect immediately followed by a Connect results in the 相同的配置 as before the Disconnect （反之亦然）。<br>
如果一个连接包含多个焊盘，an 图标 指示 whether any or all of 这些焊盘需要被 externally 连接到一个信号。点击该图标切换模式。当这样一个连接项被展开，所有焊盘 are listed separately, and clicking on Disconnect with one of the 焊盘 所选的 将只断开  disconnect that one 焊盘.
<h2>包含句号的单元或引脚名称</h2>
如果一个单元或引脚的名称包含句号，简单地输入它们，不需要任何特别的考虑（不需要引号或转义字符）。
<h2>例</h2>
<pre>
ed 6502.dev;
PREFIX 'IC';
package dil40;
connect gnd 1 rdy 2 phi1 3 !irq 4 nc1 5 !nmi 6 \
        sync 7 vcc 8  a0 9 a1 10 a2 11 a3 12 a4 \
        13 a5 14 a6 15 a7 16 a8 17 a9 18 a10 19 \
        a11 20 p$0 21 a12 22 a13 23 a14 24 a15 \
        25 d7 26 d6 27 d5 28 d4 29 d3 30 d2 31 \
        d1 32 d0 33 r/w 34 nc2 35 nc3 36 phi0 37 \
        so 38 phi2 39 !res 40;
</pre>
如果一个命令在下一行继续，明智的做法是在行末插入字符 "\" 以确保后面的文字不会被 EAGLE 命令混淆。
<p>
混淆的参数 with 命令 can also be avoided by enclosing the 参数 in 省略号 apostrophes 撇号。


<a name=41>
<h1>COPY</h1>
<dl>
<dt>
<b>功能</b>
<dd>
复制对象。
<dt>
<b>语法</b>
<dd>
<tt>COPY &#149; &#149;..</tt><br>
<tt>COPY deviceset@library [name]</tt><br>
<tt>COPY package@library [name]</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Left</mb> 在一个对象的选择它。<br>
<mb>Ctrl+Right</mb> 选择组。<br>
<mb>Center</mb> 镜像所选的对象或组。<br>
<mb>Right</mb> 旋转所选的对象或组。<br>
<mb>Shift+Right</mb> 反转旋转方向。
</dl>
<b>另请参阅</b> <a href=#55>GROUP</a>，<a href=#42>CUT</a>，<a href=#76>PASTE</a>，<a href=#29>ADD</a>，<a href=#59>INVOKE</a>，<a href=#79>POLYGON</a>
<p>
COPY 命令用于复制同一绘图中的对象，或者在元件库中复制对象。EAGLE 将 生成一个新的名称 for the copy 但将记住旧的值。当复制信号（wires），总线以及网络时，名称 are retained, but in 所有 其它cases a new name is assigned.
<h2>复制到系统剪贴板</h2>
COPY 命令 in EAGLE traditionally 仅复制ed 对象 通过用鼠标在它们上面点击 and 放置 them within the same 绘图。它也复制元件库对象 between 元件库。然而，before 版本 6 it 不复制当前的 组 selection to the 系统的剪贴板，就如其它 Windows 程序所作的一样。在 EAGLE 中，<a href=#42>CUT</a> 命令 was used for this。遗憾的是，这让 Windows 用户一次又一次的恼怒，所以从版本 6 开始，COPY 命令也复制所选的对象组 到系统的剪贴板, while still retaining the full functionality of previous 版本s. 如果您不喜欢这样，您可以用 <a href=#94>SET</a> 命令
<pre>
SET Cmd.Copy.ClassicEagleMode 1
</pre>
来恢复 COPY 命令的原始行为（和 <a href=#42>CUT</a> 命令一样）。
<h2>Copy Wires</h2>
如果您 copy wires 或 多边形s, 属于 a 信号, the 副本将属于同一信号。请注意，由于这个原因，如果在使用 COPY 命令之后两个导线重叠，DRC 将 not register an error. <br>
如果 one of the 端点s of the copied wire lie on the source 段, the wire is 连接到该段。否则，an extra 段 is 建立d for this wire（参见 also 'Copy and connectivity').
<h2>复制零件</h2>
当在原理图复制零件时，there 将 始终 be a 新的实例 of the 完整的 part added，甚至即使仅选择了多单元零件的一个单个的单元。In addition to the 所选的单元，任何其它单元 of that device which have Add-Level MUST 或 始终 将 自动地 be invoked.
<p>
如果您只是想使用多单元零件的另一个单元，您应该用 <a href=#59>INVOKE</a> 命令代替。
<h2>复制元件库对象</h2>
By 编写 <tt>COPY deviceset@library</tt> 或 <tt>COPY package@library</tt> 您可以复制 a 器件 或者一个封装 from a 给定的 元件库 into the 当前载入的元件库。<tt>library</tt> can be either a 明文的元件库名称或 一个文件路径（参见 <a href=#29>ADD</a> 命令）。In case of ambiguity 您可以添加 the 后缀 <tt>[.dev]</tt> for 器件s 或 <tt>[.pac]</tt> for 封装。
如果给出了额外的 <tt>name</tt>，复制的对象 将 be 给定的 that name。这也可以通过元件库对象的<a href=#13>右键菜单</a>来完成，或通过 <i>拖拽</i> from the 控制面板的树状视图。
<p>
<b>请注意，任何已有的元件库对象 (器件s, 符号s 或 封装）used by the copied 元件库对象 将被自动地更新。</b>
<h2>复制一个组</h2>
复制一个组 by 选择 it with the 鼠标右键 is actually done by doing an implicit <a href=#42>CUT</a> 操作, immediately followed by a <a href=#76>PASTE</a>.
<h2>复制对象到其它图纸</h2>
为复制对象到同一原理图的其它图纸，您需要 <a href=#55>GROUP</a> 对象, do a <a href=#41>COPY</a> (or <a href=#42>CUT</a>), 切换到目标图纸，然后进行 <a href=#76>PASTE</a>。
<h2>复制与连接性</h2>
Copying of wires 不改变它们的连接性。比如，如果您复制一个网络并定位到另一个网络，it 不 get 连接ed 到这个网络。The same is for 段s of the same net, busses etc. For 连接 use <a href=#70>NAME</a> 或 <a href=#60>JUNCTION</a>.


<a name=42>
<h1>CUT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
把一个组复制到剪贴板。
<dt>
<b>语法</b>
<dd>
<tt>CUT &#149;</tt><br>
<tt>CUT;</tt>
</dl>
<b>另请参阅</b> <a href=#76>PASTE</a>，<a href=#41>COPY</a>，<a href=#55>GROUP</a>
<p>
部分绘图（或者甚至是整个 PCB 图）可以复制到其它绘图 by means of 命令s CUT and PASTE.
<p>
为此，您需要首先定义一个组（GROUP 命令）。然后使用 CUT 命令，followed by a 参考点（鼠标点击或坐标（x y））to 把所选的对象放进缓冲区。<tt>CUT;</tt> 自动地把参考点放在所选的对象的中心（捕获到栅格）。Now 您可以 改变to an 其它绘图 (EDIT) and 复制缓冲区的内容 onto the new 绘图 by 执行 the PASTE 命令。
<h2>参考点</h2>
如果您在选择 CUT 命令之后点击鼠标，鼠标光标的位置为组定义了一个参考点，即当使用 PASTE 命令时，鼠标光标将位于组的精确位置。
<h2>注</h2>
不像其它（Windows）程序，EAGLE 的 CUT 命令并不物理地 移除 the marked 组 from the 绘图；它仅复制组 into the 剪贴板。不幸的是，一次又一次地惹恼了 Windows 用户，所以从版本 6 开始，CUT 命令不再出现在主下拉菜单及命令按钮工具栏中（it is still available from the 命令行 and within 脚本s）。Windows 用户将简单地 use the <a href=#41>COPY</a> 命令 to 复制所选的 组 of 对象 into the 系统的剪贴板。This, however, 将不允许它们 to 定义 an explicit 参考点 for the 所选的组。它将 始终 be 所选的 at the center of 组's bounding rectangle。Using a 参考点 is only possible with the CUT 命令。如果您不喜欢这样，可以使用 <a href=#94>SET</a> 命令
<pre>
SET Cmd.Copy.ClassicEagleMode 1
</pre>
来恢复 CUT 命令的原始行为（和 <a href=#41>COPY</a> 命令一样）。


<a name=43>
<h1>DELETE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
删除对象。
<dt>
<b>语法</b>
<dd>
<tt>DELETE &#149;..</tt><br>
<tt>DELETE name ..</tt><br>
<tt>DELETE SIGNALS</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Shift+Left</mb> 删除 higher level 对象.<br>
<mb>Ctrl+Left</mb> 删除 a wire joint.<br>
<mb>Ctrl+Right</mb> 删除组。
</dl>
<b>另请参阅</b> <a href=#89>RIPUP</a>，<a href=#47>DRC</a>，<a href=#55>GROUP</a>
<p>
DELETE 命令用于删除所选的对象。
<p>
零件, 焊盘, smds, 引脚 和单元也可以通过它们的名称选取，which is 特别有用 如果对象位于当前显示的窗口区域之外。请注意，当选择 a 多单元零件 in a 原理图 by name, 您将需要输入完整的实例名称，包括零件和单元名称。
<p>
零件的属性 can be 所选的 by 输入 the 连接 of 零件名称和属性名称，比如 <tt>R5&gt;VALUE</tt>。
<p>
点击鼠标右键删除先前定义的 <a href=#55>GROUP</a>.
<p>
After 删除ing a 组 it is possible that 鼠线 which have been 新建立d due to the removal of a component may be "残余left over", 因为它们 have not been part of the 原始的组。在这种情况下，您应该用 <a href=#83>RATSNEST</a> 命令重新计算鼠线。
<p>
With active <a href=#362>正向&amp;反向编序</a>, no wires or 过孔 can be deleted from a 信号 that is 连接ed 到 元件 in a board. 同样，no 元件 can be deleted that have 信号 连接ed 到 them. Modifications like 这些 have to be done in the 原理图.
<p>
使用 <a href=#89>RIPUP</a> 命令 to convert an already routed 连接 back into an 鼠线.
<p>
DELETE 命令在不可见层上没有效果（请参考 DISPLAY）。
<p>
DRC 可能产生只能用 DRC CLEAR 清除发热错误多边形。
<h2>删除导线连接点</h2>
如果 DELETE 命令，with the <tt>Ctrl</tt> 键 pressed, is applied to the joining point of 两个 wires, 这些 wires are combined to form one 直导线。For this to work the 两个 wires must be in the 同一层 and have the 相同的宽度和线型，and must both have round endings (in case of arcs).
<h2>删除多边形的角</h2>
DELETE 命令一次删除多边形的一个角。如果一个多边形只剩三个角，则整个多边形被删除。
<h2>删除元件</h2>
元件可以被删除 仅当 the t原点s layer (or b原点s with mirrored 元件) 可见 and 如果（激活了<a href=#362>正向&amp;反向编序</a>）没有信号连接到零件（也见 <a href=#88>REPLACE</a>）。请注意 an 元素 may appear to be 无连接 (no 鼠线 or wires leading to any of 它的焊盘）而事实上 it <b>is</b> 连接ed 到 a 供电电压 through an implicit power pin。在这种情况下，您只能在原理图中删除相应的零件。
<h2>Deleting Junctions, Nets, and Buses</h2>
以下规则适用：
<ul>
<li>如果一个总线被分成两个部分，均保持初始的名称。
<li>如果一个网络被分成两个部分，较大的一个保持初始的名称，而较小的一个得到新（生成的）名称。
<li>在 DELETE 命令之后，标签从属于 the 段 next to them. 
<li>如果一个节点被删除，the net is separated at this 位置. Please check the names of the 段s with the SHOW 命令。
</ul>
<h2>删除供电符号</h2>
如果 last 供电符号 of a 给定的类型 is deleted from a net 段 that 具有相同名称 as the deleted 供电引脚，that 段 is 给定的 a newly 生成的名称（如果没有其它电源符号s still 附在 that 段) 或 the name of one of the remaining 供电符号。
<h2>删除信号</h2>
如果您选择 wires (tracks) 或 过孔 belonging to a 信号 with the DELETE 命令 三个 cases have to be considered:
<ul>
<li>信号被分成两个部分。EAGLE 将 生成一个新的名称 for the smaller part of the 信号 and keep the previous name for the larger one.
<li>信号从一端删除。信号的剩余部分将保持 the previous name.
<li>信号只有一个鼠线。它将被完全删除，并且它的名称不再存在。
</ul>
After 导线或过孔被删除 从一个包含多边形的信号，从属于信号的所有多边形 keeping the 原始的名称（usually the bigger part).
<h2>删除全部信号</h2>
<p>
DELETE SIGNALS 可以用于删除电路板上的所有信号。这是有用的，如果您想要读入一个新的或修改过的网络列表（参见 EXPORT）。只有那些连接到焊盘的信号被删除。
<p>
如果您想要删除一个零件 that has the name SIGNALS，您需要写 you need to write the name in 单引号。
<h2>删除 higher level 对象</h2>
如果 <tt>Shift</tt> 键 is pressed 当在一个对象上点击时，the 对象 that is hierarchically above the 所选的 one 将被删除。这适用于以下对象:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>Gate</tt>    </td><td width=20><td>删除整个零件 包含该单元（即使 the 单元 are spread over 几个图纸）。如果激活了正/反向编序，the wires 连接ed 到 元素 在电路板图中 将 not be ripped up (as opposed to deleting a single 单元), except for 那些 cases where a pin of the deleted part is only 连接的 directly to one single 其它引脚 and no net wire</td></tr>
<tr><td><tt>Polygon&nbsp;Wire</tt> </td><td width=20><td>删除整个多边形</td></tr>
<tr><td><tt>Net/Bus&nbsp;Wire</tt> </td><td width=20><td>删除整个网络或总线 段</td></tr>
</table>
<p>
不要忘记：删除 can be reversed by the <a href=#102>UNDO</a> 命令！


<a name=44>
<h1>DESCRIPTION</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义绘图或元件库对象的描述。
<dt>
<b>语法</b>
<dd>
<tt>DESCRIPTION [ * ]</tt><br>
<tt>DESCRIPTION [ * ] 描述_string;</tt>
</dl>
<b>另请参阅</b> <a href=#40>CONNECT</a>，<a href=#74>PACKAGE</a>，<a href=#105>VALUE</a>
<p>
该命令用于定义或编辑绘图或元件库对象的描述。
<p>
<tt>描述_string</tt> 可以包含 <a href=#360>HTML</a> 标签。
<p>
<tt>描述_string</tt> 的第一个非空行将被用作简短的描述性文字（<i>headline</i>）in the 控制面板.
<p>
不带参数的 DESCRIPTION 命令打开一可以编辑文字的对话框。The upper pane of 这个对话框显示格式化的文字，in case it 包含 <a href=#360>HTML</a> 标签, while the lower pane 用于编辑 the raw text. At the very top of the dialog the <i>headline</i> is displayed as it 将 result from the 描述的第一个非空行。The headline is stripped of any HTML 标签。
<p>
默认情况下，DESCRIPTION 命令 works on the 当前编辑对象的描述，比如器件, 封装, 符号, PCB 图或图纸。如果，在一个元件库中，没有当前编辑的对象 (as can be the case after it has been newly 载入的) 元件库的描述 将 be changed.
<p>
为明确地访问元件库的描述，即使元件、封装或符号已在编辑，输入星号字符（<tt>'*'</tt>）作为 DESCRIPTION 命令的第一个参数。这也是 the way to 访问原理图的描述，as opposed to the 描述 of an 单独的图纸。
<h2>例</h2>
<pre>
DESCRIPTION '&lt;b&gt;Quad NAND&lt;/b&gt;&lt;p&gt;\nFour NAND gates with 2 inputs each.';
</pre>
这将导致
<p>
<b>Quad NAND</b><p>
四个 NAND 单元，每单元具有 2 输入。


<a name=45>
<h1>尺寸标注</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为绘图添加尺寸标注。
<dt>
<b>语法</b>
<dd>
<tt>DIMENSION [dtype] &#149; &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选层。<br>
<mb>Right</mb> 改变 dtype.<br>
<mb>Shift+Right</mb> 反转改变 dtype 的方向。<br>
<mb>Ctrl+Left</mb> 当启动尺寸标注时，不选择对象。<br>
</dl>
<b>另请参阅</b> <a href=#109>WIRE</a>，<a href=#36>CHANGE</a>，<a href=#37>CIRCLE</a>，<a href=#57>HOLE</a>
<p>
DIMENSION 命令为绘图添加尺寸标注。It can either be applied to an 对象, 或 it 可以绘制任意尺寸标注。
<p>
如果 第一个 point selects an 对象, a suitable 尺寸标注对象 is 生成d as follows:
<p>
<table cellspacing=5>
<tr><td>straight wire</td><td width=20><td>linear 尺寸 显示 the 距离 between the 端点 of the wire</td></tr>
<tr><td>curved wire</td>  <td width=20><td>半径 尺寸 显示 the 半径 of the arc</td></tr>
<tr><td>circle</td>       <td width=20><td>直径 尺寸 显示 the 直径 of the circle</td></tr>
<tr><td>hole</td>         <td width=20><td>直径 尺寸 显示 the 直径 of the hole</td></tr>
</table>
<p>
如果没有选择对象，或 a wire is 所选的 at one of 它的端点，a 尺寸标注对象 is 生成d 依照当前的尺寸类型。如果这个尺寸类型 is not the one that is needed, 鼠标右键 can be clicked to 遍历 the various types.
<p>
To draw an 任意尺寸 even at 极为贴近 to an 对象 that 将 trigger a 特定类型的尺寸标注，按 <tt>Ctrl</tt> 键 with the 第一次点击。This may also be useful 当使用 DIMENSION 命令 in a 脚本 (by adding the 'C' 修饰符 to the 第一个坐标），为确保 the 尺寸 appears exactly as intended.
<p>
The way in which a 尺寸标注对象 is drawn (line, unit, precision) can be configured with "CHANGE DLINE/DUNIT" 或 with 它的属性对话框。请注意，“Unit”参数 in this dialog refers to the unit in which the 实际的数 of the 尺寸对象 将 be displayed.
<h2>Dimension Type</h2>
每个尺寸对象 has 三个坐标 that 定义 它的参考点和一个对齐点。How 这些坐标 are actually interpreted to display a 尺寸对象 依赖于 dtype 的属性。
<p>
<b>Parallel</b>
<p>
A <i>parallel</i> 尺寸标注显示它的第一个和第二个参考点之间的距离。尺寸线 is parallel to the line going through 它的 参考点s, and it runs through the 给定的对齐点。不管对齐点的实际位置，only 它的距离 from the the line through 它的参考点s 被考虑在内。当 a parallel 尺寸标注对象 is newly 建立d 或 modified, the 对齐点 is normalized, 以便 it lies in the middle of the 尺寸线.
<p>
<b>Horizontal</b>
<p>
Same as <i>parallel</i>, but the 尺寸线 extends only in X direction, and it 显示 only the X 距离 between the 参考点s.
<p>
<b>Vertical</b>
<p>
Like <i>horizontal</i>, but for Y.
<p>
<b>Radius</b>
<p>
A <i>radius</i> 尺寸标注显示它的第一个和第二个参考点之间的距离。第一个参考点 is at the center of the arc this 尺寸 is drawn for, while the 第二个点，s somewhere on the arc 自身. 如果对齐点在两个参考点之间，the 尺寸 line is drawn between the 参考点s, which is "inside" the arc. Otherwise the 尺寸 line is drawn "outside" of the arc. 如果 测量 text is too long to fit on an inside 半径 尺寸, the 尺寸 line is drawn on the outside. A 半径 尺寸 自动地 显示 a cross at 它的 第一个 参考点 (which is the center of the arc). 当 a 半径 尺寸标注对象 is newly 建立d 或 modified, the 对齐点 is normalized, 以便 it lies in the middle of the 尺寸 line for an "inside" 尺寸, 或 just beyond the arrow for an "outside" 尺寸.
<p>
<b>Diameter</b>
<p>
<i>diameter</i> 尺寸标注显示它的第一个和第二个参考点之间的距离。这两个参考点s are on opposite sides of the 圆的圆周，so their 距离 measures the 圆的直径。如果对齐点在两个参考点之间，the 尺寸 line is drawn between the 参考点s, which is "inside" the circle. 否则 the 尺寸 line is drawn "outside" of the circle, much like a <i>parallel</i> 尺寸标注。如果 测量 text is 太长 to fit on an inside 直径 尺寸, the 尺寸 line is drawn on the outside. A 直径 尺寸标注 自动地显示 a cross in the middle between 它的两个参考点（which is the 圆的中心）。当 a 直径 尺寸标注对象 is newly 建立d 或 modified, the 对齐点 is normalized, 以便 it lies at the same 坐标 as 它的 second 参考点 for an "inside" 尺寸, 或 in the middle of the 尺寸 line for an "outside" 尺寸.
<p>
<b>Angle</b>
<p>
<i>angle</i> 尺寸标注显示第二个和第三个参考点之间的角度, measured 逆时针 around the 第一个参考点 (which is the center of the arc). 当一个角度尺寸标注对象 is newly 建立d 或 modified, the 第二个参考点 is normalized, 以便 it has the same 距离 from the 第一个 point as the third one does.
<p>
<b>Leader</b>
<p>
A <i>leader</i> 尺寸 可以用于 point at something in a 绘图. There is an arrow at the 第一个点，and the second and third 点 定义 a (bent) line. The leader 不显示任何测量。您可以使用 <a href=#101>TEXT</a> 命令放置您需要的任何文字。
<h2>Selection</h2>
尺寸标注对象可以在它的三个点的任何一个（位置）选择。


<a name=46>
<h1>DISPLAY</h1>
<dl>
<dt>
<b>功能</b>
<dd>
选择可见的层。
<dt>
<b>语法</b>
<dd>
<tt>DISPLAY</tt><br>
<tt>DISPLAY [option] layer_number..</tt><br>
<tt>DISPLAY [option] layer_name..</tt>
</dl>
<b>另请参阅</b> <a href=#62>LAYER</a>，<a href=#81>PRINT</a>
<p>
有效的选项为：ALL, NONE, LAST, ? 以及 ??
<p>
DISPLAY 命令用于选择可见的层。作为参数的层号和层的名称是允许的（甚至混合的）。如果选择了所有参数，所有层都变为可见。如果使用了参数 NONE，则关闭所有层。例如：
<pre>
DISPLAY NONE BOTTOM;
</pre>
follow 该命令命令只显示底层。
<p>
如果给定了参数 LAST，the previously 可见的层将被显示。
<p>
请请注意只有那些已经在<a href=#136>设计规则</a>的层设置中输入进的信号层（1 到 16）是可用的。
<p>
如果层的名称或层的号码包含一负号，它将被过滤掉。例如：
<pre>
DISPLAY TOP -BOTTOM -3;
</pre>
这种情形下，顶层被显示，底层和层号为 3 的层则不显示。
<p>
Avoid layer names ALL 和 NONE as well as names starting with a "-".
<p>
某些命令（PAD, SMD, SIGNAL, ROUTE）会自动地激活 certain 的层。
<p>
如果 DISPLAY 命令不带参数调用，a dialog is presented which 允许您调整所有层的设置.
<h2>未定义的层</h2>
选项 '?' 和 '??' 可以用于 control what happens if an 未定义的层 is 给定的 in a DISPLAY 命令。 Any 未定义的层 跟随 a '?' 将 引发一个警告 and the 用户可以接受或取消整个 DISPLAY 命令。未定义的层跟着一个 '??' 将 be silently ignored. This is 最有用的 for 编写 脚本文件 that shall be able to 处理 any 绘图, 即使 a 特定的 绘图 不 包含 some of the listed layers.
<pre>
DISPLAY TOP BOTTOM ? MYLAYER1 MYLAYER2 ?? 其它WHATEVER
</pre>
上述的例子中，the 两个 layers TOP and BOTTOM are required and 将 导致（引发）一个错误 if either of them is missing. MYLAYER1 and MYLAYER2 将 just be reported if missing, allowing the 用户取消该操作，and 其它and WHATEVER 将 be displayed if they are there, otherwise they 将 be ignored.
<p>
'?' 与 '??' 选项s may appear 任意次数 and in 任意顺序。
<h2>焊盘与过孔</h2>
如果焊盘和过孔在不同的层上具有不同的形状，当前可见的（用 DISPLAY 激活的）信号层的形状 are displayed on top of each other.
<p>
如果所选的层 17 (Pads) 或 18（Vias）的颜色为零（which 代表当前的背景色），焊盘和过孔 are displayed in the color and fill style of the 各自的信号层。如果信号层都不可见，则不显示焊盘和过孔。
<p>
如果所选的颜色 for layer 17 (Pads) 或 18 (Vias) is not the 背景色 and no 信号层s are 可见的, 焊盘和过孔 are displayed in the 形状 of the 最上面和最下面的层。
<p>
这也同样适用于由 <a href=#81>PRINT</a> 产生的打印输出。
<h2>选择 对象</h2>
如果 您想要 选择 certain 对象或元素（e.g. with MOVE 或 DELETE) the 相应的层必须可见。元素只能 be 所选的 if the t原点s (or b原点s with mirrored 元素s) 层 is 可见的!
<h2>参数的别名</h2>
参数的别名可以用于定义 certain 参数 设置 to the DISPLAY 命令，which can later be referenced by a 给定的 name. The 别名 can also be accessed by clicking on the DISPLAY 按钮 and holding the 鼠标按键 pressed until the list pops up. A right click on the 按钮 also pops up the list.
<p>
处理这些别名的语法为：
<dl>
<dt>
<tt>DISPLAY = <i>name</i> <i>参数</i></tt>
<dd>
定义 alias with the 给定的 <i>name</i> to expand to the 给定的 <i>参数</i>。<i>name</i> 可以包含任意数量的字母、数字和下划线，and is treated case insensitive. It must begin with a letter 或 underline and may not be one of the 选项 关键字.
<dt>
<tt>DISPLAY = <i>name</i> @</tt>
<dd>
定义 alias with the 给定的 <i>name</i> to expand to the 当前参数 设置 of the 命令。
<dt>
<tt>DISPLAY = ?</tt>
<dd>
询问 the 用户 to 输入名称 for 定义别名 for the 当前参数 设置 of the 命令。
<dt>
<tt>DISPLAY = <i>name</i></tt>
<dd>
打开 DISPLAY 对话框，and 允许用户选择一组层s that 将 be defined as an alias under the 给定的 <i>name</i>.
<dt>
<tt>DISPLAY = <i>name</i>;</tt>
<dd>
用给定的 <i>name</i> 删除别名。
<dt>
<tt>DISPLAY <i>name</i></tt>
<dd>
Expands the alias with the 给定的 <i>name</i> and 执行 DISPLAY 命令 with the 结果集 of 参数。The <i>name</i> may be abbreviated and there may be 其它参数 before and after 这个别名（甚至其它别名）。请注意 in case <i>name</i> is an 缩写 简写abbreviation, 别名 have 优先权 高于 precedence over 其它参数名称s of the 命令。
</dl>
例如：
<p>
<tt>DISPLAY = MyLayers None Top Bottom Pads Vias Unrouted</tt>
<p>
定义别名 "MyLayers" which, 当 used as in
<p>
<tt>DISPLAY myl</tt>
<p>
将显示 just the layers Top, Bottom, Pads, Vias and Unrouted (without the "None" 参数 the 给定的层s 将被显示ed in addition to the 当前 可见层s). Note the 缩写的使用 of the alias and the 大小写不敏感。


<a name=47>
<h1>DRC</h1>
<dl>
<dt>
<b>功能</b>
<dd>
计规则检查。
<dt>
<b>语法</b>
<dd>
<tt>DRC</tt><br>
<tt>DRC &#149; &#149; ;</tt><br>
<tt>DRC 载入|SAVE filename;</tt><br>
<tt>DRC *</tt>
</dl>
<b>另请参阅</b> <a href=#136>设计规则</a>，<a href=#38>CLASS</a>，<a href=#94>SET</a>，<a href=#49>ERC</a>，<a href=#50>ERRORS</a>
<p>
命令 DRC 检查 a board against the 当前的set of <a href=#136>设计规则</a>。
<p>
请请注意 electrically ir相关的 对象 (wires in 封装, rectangles, circles and texts) are not checked against each other for 间隙 错误。
<p>
The errors found are displayed as error 多边形s in the 各自的层，and can be browsed through with the <a href=#50>ERRORS</a> 命令。
<p>
不带参数的 DRC 命令 打开可以定义电路板的设计规则的对话框，and from which the 实际的 check can be started.
<p>
如果给定了两个坐标 in the DRC 命令 (or if the Select 按钮 is clicked in the 设计规则 dialog) 所有 检查 将 be performed solely in the defined rectangle. Only errors that occur (至少 partly) in this area 将 be reported.
<p>
如果您 get DRC errors that don't go away, even 如果您 modify the <a href=#136>设计规则</a>, make sure you check the <a href=#38>Net class</a> of the reported 对象 to see whether the error is caused by a specific 参数 of that class.
<p>
To 删除所有错误多边形 使用命令
<pre>
ERRORS CLEAR
</pre>
<p>
The <tt>载入</tt> and <tt>SAVE</tt> 选项s 可以用于 载入设计规则 from 或 save them to the 给定的 文件。 如果 <i>filename</i> 不含扩展名 <tt>".dru"</tt> it 将 be appended 自动地.
<p>
如果 DRC 命令 is 给定的 an 星号 字符 (<tt>'*'</tt>）作为第一个 参数，设计规则对话框将 be opened and 允许编辑设计规则, without triggering an 实际的 check 当 the dialog is confirmed.
<h2>Related SET 命令</h2>
The SET 命令 可以用于 改变the 行为 of the DRC 命令:
<pre>
SET DRC_FILL  fill_name;
</pre>
定义 fill style used for the DRC error 多边形s. 缺省的 is LtSlash.


<a name=48>
<h1>EDIT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Loads an 现有的 绘图 to be edited 或 建立s a new 绘图.
<dt>
<b>语法</b>
<dd>
<tt>EDIT name</tt><br>
<tt>EDIT name.ext</tt><br>
<tt>EDIT .ext</tt><br>
<tt>EDIT .sX [ .sY ]</tt>
</dl>
<b>另请参阅</b> <a href=#72>OPEN</a>，<a href=#39>CLOSE</a>，<a href=#34>BOARD</a>
<p>
The EDIT 命令 用于 载入 a 绘图 或 if a 元件库 has been opened with the OPEN 命令，to 载入 a 封装, 符号, 或 device for editing.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>EDIT name.brd</tt>  </td><td width=20><td>载入一 board</td></tr>
<tr><td><tt>EDIT name.sch</tt>  </td><td width=20><td>载入一 原理图</td></tr>
<tr><td><tt>EDIT name.pac</tt>  </td><td width=20><td>载入一 封装</td></tr>
<tr><td><tt>EDIT name.sym</tt>  </td><td width=20><td>载入一 符号</td></tr>
<tr><td><tt>EDIT name.dev</tt>  </td><td width=20><td>载入一 device</td></tr>
<tr><td><tt>EDIT .s3</tt>       </td><td width=20><td>loads 图纸 3 of a 原理图</td></tr>
<tr><td><tt>EDIT .s5 .s2 </tt>  </td><td width=20><td>moves 图纸 5 before 图纸 2 and loads it (if 图纸 5 不存在，a new 图纸 is inserted before 图纸 2)</td></tr>
<tr><td><tt>EDIT .s2 .s5 </tt>  </td><td width=20><td>moves 图纸 2 before 图纸 5 and loads it (if 图纸 5 不 exist, 图纸 2 becomes the last 图纸)</td></tr>
</table>
<p>
通配符 in the name are allowed (e.g. *.brd).
<p>
EDIT 命令 without 参数 将 cause a 文件对话框 (in PCB图或 原理图 mode) 或 a <a href=#23>弹出菜单</a>（元件库模式下） to appear from which 您可以选择文件或对象。
<p>
To 改变from 原理图 to a board with the 相同名称，可以使用命令：
<pre>
EDIT .brd
</pre>
。In the same way to 改变from board to 原理图 use 命令
<pre>
EDIT .sch
</pre>
To 编辑原理图的另一个的图纸，可以使用命令
<pre>
EDIT .sX
</pre>
（X 为图纸编号）或编辑器窗口的动作工具栏中的组合框。如果给定的图纸编号不存在，则建立新的图纸。
<p>
您也可以通过点击图纸缩略图的图标在图纸之间切换。Drag&amp;drop in the thumbnail preview allows you to reorder 图纸.
<p>
符号，元件或封装 may only be edited if a 元件库 is 第一个 opened with the OPEN 命令。
<h2>Which Directory?</h2>
EDIT 从<a href=#14>工程目录</a>载入文件。


<a name=49>
<h1>ERC</h1>
<dl>
<dt>
<b>功能</b>
<dd>
电气规则检查。
<dt>
<b>语法</b>
<dd>
<tt>ERC</tt>
</dl>
<b>另请参阅</b> <a href=#47>DRC</a>，<a href=#50>ERRORS</a>，<a href=#363>一致性检查</a>
<p>
该命令用于测试原理图是否存在电气错误。检查结果 is presented in the <a href=#50>ERRORS</a> dialog.
<h2>一致性检查</h2>
ERC 命令也执行 <a href=#363>一致性检查</a> between a 原理图 and 它的 相应的 board, provided the board file has been 载入的 before starting the ERC. As a result of this check the automatic <a href=#362>正向&amp;反向编序</a> 将 be turned on 或 off, 依赖于 whether the 文件 have been found to be 一致 或 not.
<p>
请注意，ERC 检查不一致 between the implicit power and 供电引脚 in the 原理图 and the 实际的信号连接 在电路板图中。Such 不一致 can occur if the 供电引脚配置 is modified after the board 已被建立d with the BOARD 命令。由于供电引脚 are only 连接的 "implicitly", 这些改变 can't 始终 be forward annotated.<br>
如果 such errors are detected, <a href=#362>正向&amp;反向编序</a> 将 still be performed, but the 供电 pin configuration should be checked!


<a name=50>
<h1>ERRORS</h1>
<dl>
<dt>
<b>功能</b>
<dd>
显示由 ERC 或 DRC 命令发现的错误。
<dt>
<b>语法</b>
<dd>
<tt>ERRORS</tt><br>
<tt>ERRORS CLEAR</tt>
</dl>
<b>另请参阅</b> <a href=#49>ERC</a>，<a href=#47>DRC</a>
<p>
命令 ERRORS 用于显示由电气规则检查（ERC）或设计规则检查（DRC）发现的错误。If 所选的, a window is opened in which all errors are listed. 如果 no ERC 或 DRC has been run for the 载入的 绘图, yet, the 各自的 check 将 be started 第一个.
<p>
The list view in the ERRORS 对话框 has up to four sections that 包含 <i>一致性错误</i>，<i>错误</i>, <i>警告</i> 及 <i>认可的</i> 消息，分别。
<p>
选择 an entry with the mouse causes the error to be marked in the 编辑器窗口 with a rectangle and a line from the 屏幕的左上角。
<p>
双击 an entry centers the 绘图 to the area where the error is located. Checking the "Centered" checkbox causes this to happen 自动地.
<h2>Marking a message as processed</h2>
The <i>Processed</i> 按钮 marks a message as processed. It is still contained in the list, but there is no error indicator in the 编辑器窗口 any more (except if the list entry is 所选的). This 可以用于标记消息 as "done" after 修正相关的问题，without having to run the check again. After the next ERC/DRC the 消息将 be either gone, 或 marked as unprocessed again if the problem still persists.
<h2>Approving a message</h2>
如果一个错误或或警告无法修正，but apparently 不 matter (which the 用户 has to decide), 可以把它移动到 <i>Approved</i> section 通过按 <i>Approve</i> 按钮。Messages in that section 将 not 绘制错误指示 in the 编辑器窗口 (except if the list entry is 所选的) and are implicitly marked as "processed". 如果 any of 这些 messages no longer apply after the next ERC/DRC, they 将被删除。所有认可的消息存储在绘图文件中，以便它 is documented which ones have been 明确地认可 by the 用户. 请注意，一致性错误无法被认可 - 它们始终 have to be fixed 以便激活 <a href=#362>正向&amp;反向编序</a>.
<h2>清除列表</h2>
<i>全部清除</i> 按钮删除列表中的所有条目，除了已认可的消息。这可以用于 get rid of the error indicators in the 编辑器窗口. The next ERC/DRC 将 re生成 the messages again, if they still apply.
<p>
列表也可以通过输入命令来清除
<pre>
ERRORS CLEAR
</pre>



<a name=51>
<h1>EXPORT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Generation of 数据文件.
<dt>
<b>语法</b>
<dd>
<tt>EXPORT SCRIPT    filename;</tt><br>
<tt>EXPORT NETLIST   filename;</tt><br>
<tt>EXPORT NETSCRIPT filename;</tt><br>
<tt>EXPORT PARTLIST  filename;</tt><br>
<tt>EXPORT PINLIST   filename;</tt><br>
<tt>EXPORT DIRECTORY filename;</tt><br>
<tt>EXPORT IMAGE     filename|CLIPBOARD [MONOCHROME|WINDOW] resolution;</tt>
</dl>
<b>另请参阅</b> <a href=#93>SCRIPT</a>，<a href=#92>RUN</a>
<p>
EXPORT 命令用于 provide you with ASCII 文本文件 which can be used e.g. to transfer data from EAGLE to 其它程序，或从当前绘图生成图像文件。
<p>
默认情况下，the 输出文件 is written into the <b>工程</b>目录。
<p>
该命令产生以下输出文件：
<h2>SCRIPT</h2>
A 元件库 previously opened with the OPEN 命令 将被输出 as a 脚本文件。当 a 元件库 has been exported and is to be imported again with the SCRIPT 命令，a new 元件库应被打开 以便 avoid duplication - e.g. the same 符号 is defined more than once. Reading 脚本文件 can be accelerated 如果命令
<pre>
Set Undo_Log Off;
</pre>
在 is 给定 before.
<h2>NETLIST</h2>
产生 netlist for the 载入的原理图或 PCB 图。Only 网络 which are 连接ed 到 元素s are listed.
<h2>NETSCRIPT</h2>
产生 a netlist for the 载入的原理图 in the form of a 脚本文件。该文件可以用于 read a new 或 changed netlist into a board where 元素s have already been placed 或 previously routed tracks have been deleted with <tt>DELETE SIGNALS</tt>。请注意 while reading such a 脚本 into a board no 原理图 that is 一致 with this board may be 载入的.
<h2>PARTLIST</h2>
为原理图或 PCB 图产生元件清单。仅包含带引脚/焊盘的元素。
<h2>PINLIST</h2>
产生 a list with 焊盘 and 引脚, 包含 the pin directions and the names of the 网络 连接ed 到 the 引脚.
<h2>DIRECTORY</h2>
Lists the directory of the 当前打开的元件库。
<h2>IMAGE</h2>
Exporting an <i>IMAGE</i> 产生 an image file with a format 相应的 to the 给定的 filename extension. The 以下 image formats are available:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>.bmp</tt></td>   <td width=20><td>Windows 位图文件</td></tr>
<tr><td><tt>.png</tt></td>   <td width=20><td>PNG 文件</td></tr>
<tr><td><tt>.pbm</tt></td>   <td width=20><td>Portable Bitmap 文件</td></tr>
<tr><td><tt>.pgm</tt></td>   <td width=20><td>Portable Grayscale Bitmap 文件</td></tr>
<tr><td><tt>.ppm</tt></td>   <td width=20><td>Portable Pixelmap 文件</td></tr>
<tr><td><tt>.tif</tt></td>   <td width=20><td>TIFF 文件</td></tr>
<tr><td><tt>.xbm</tt></td>   <td width=20><td>X Bitmap 文件</td></tr>
<tr><td><tt>.xpm</tt></td>   <td width=20><td>X Pixmap 文件</td></tr>
</table>
<p>
参数 <i>resolution</i> 定义了图像分辨率（单位 'dpi'）。
<p>
如果 <i>filename</i> is the special name CLIPBOARD （不分大小写）the image 将被复制进系统的剪贴板。
<p>
可选的关键字 <i>MONOCHROME</i> 建立s a 黑&amp;白图像。
<p>
可选的 关键字 <i>WINDOW</i> 建立s an image of the 当前 可见的 area in the 编辑器窗口. Without this 关键字, the image 将 包含 the entire 绘图.
<h2>Further formats</h2>
A lot of further formats like DXF 或 Hyperlynx can be exported by ULPs. They can be started from 命令行 using the <a href=#92>RUN</a> 命令。Under 'File/Export' a number 这些 format exports are also available.


<a name=52>
<h1>FRAME</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Adds a frame to a 绘图.
<dt>
<b>语法</b>
<dd>
<tt>FRAME [ columns [ rows ] ] [ borders ] &#149; &#149;</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> selects the layer.
</dl>
<b>另请参阅</b> <a href=#61>LABEL</a>
<p>
The FRAME 命令 draws a frame with numbered 行和列. The 两个 points 定义 两个 opposite corners of the frame. 按 鼠标中键 改变 the layer to which the frame is to be added.
<p>
The <tt>columns</tt> 参数 定义了 the number of columns in the frame. There can be up to 127 columns. 默认情况下，the columns are numbered from left to right. 如果 <tt>columns</tt> value is negative, they are numbered from right to left.
<p>
The <tt>rows</tt> 参数 定义了 the number of rows in the frame. There can be up to 26 rows. Rows are marked from top to bottom with 字母, beginning with 'A'. 如果 <tt>rows</tt> value is negative, they are marked from bottom to top. 如果 <tt>rows</tt> is 给定的, it must be preceeded by <tt>columns</tt>.
<p>
The <tt>borders</tt> 参数, if 给定的, 定义了 which sides of the frame 将 have a border with numbers 或 字母 displayed. Valid 选项s for 该参数 are <tt>Left</tt>, <tt>Top</tt>, <tt>Right</tt> and <tt>Bottom</tt>.
默认情况下，所有 four sides of the frame 将 have a border. 如果 any of 这些 选项s is 给定的, only the requested sides 将 have a border. The special 选项s <tt>None</tt> and <tt>All</tt> 可以用于 have no borders at all, or 所有 sides marked.
<p>
Even though 您可以 draw several frames in the same 绘图, only the 第一个 one 将 be used for calculating the 位置s of parts and 网络. 这些 位置s can be used, 比如, in a <a href=#141>用户语言</a> Program to 生成 a list of parts with their locations in their 各自的 frame.
They are also used internally to 自动地 生成 cross references for <a href=#61>labels</a>.
<p>
Due to the special nature of the frame 对象, it 不 have a rotation of 它自己的, and it 不 get rotated with the <a href=#90>ROTATE</a> 命令。
<p>
A frame can be drawn directly into a PCB图或 原理图, but more typically you 将 want to 建立 a special 符号或封装 绘图 that perhaps also 包含 a 标题栏, which 您可以 then use in 所有 您的 绘图s. The "frames" 元件库 that comes with EAGLE 包含 several 绘图 frames.
<h2>例</h2>
<pre>
FRAME 10 5 TOP LEFT &#149; &#149;
</pre>
draws a frame with 10 columns (numbered from left to right) and 5 rows (marked 'A' to 'E' from top to bottom) that has the 行和列 indicators drawn only at the top and left border.


<a name=53>
<h1>GATESWAP</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Swaps equivalent 单元 on a 原理图.
<dt>
<b>语法</b>
<dd>
<tt>GATESWAP &#149; &#149;..;</tt><br>
<tt>GATESWAP gate_name gate_name..;</tt>
</dl>
<b>另请参阅</b> <a href=#29>ADD</a>
<p>
Using 这个命令 两个单元 may be swapped within a 原理图. Both 单元 must be identical with the same number of 引脚 and must be allocated the same Swaplevel in the device 定义. They do not, however, need to be in the same device.
<p>
The name used in the GATESWAP 命令 is the 显示的ed 名称 on the 原理图 (e.g. U1A for 单元 A in device U1).
<p>
如果一个元件在 GATESWAP 命令之后不再使用，it is deleted 自动地 from the 绘图.


<a name=54>
<h1>GRID</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义栅格。
<dt>
<b>语法</b>
<dd>
<tt>GRID option..;</tt><br>
<tt>GRID;</tt>
<dt>
<b>键盘</b>
<dd>
<tt>F6: GRID;</tt>   开启或关闭栅格。
</dl>
<b>另请参阅</b> <a href=#93>SCRIPT</a>
<p>
GRID 命令用于指定栅格以及当前的单位。如果不给定选项，则该命令在 GRID ON 和 GRID OFF 之间切换。
<p>
The 以下选项s exist:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>GRID ON;</tt>        </td><td width=20><td>开启栅格显示</td></tr>
<tr><td><tt>GRID OFF;</tt>       </td><td width=20><td>关闭栅格显示</td></tr>
<tr><td><tt>GRID DOTS;</tt>      </td><td width=20><td>以点显示栅格</td></tr>
<tr><td><tt>栅格线;</tt>         </td><td width=20><td>以实线显示栅格</td></tr>
<tr><td><tt>GRID MIC;</tt>       </td><td width=20><td>设置栅格单位为 micron</td></tr>
<tr><td><tt>GRID MM;</tt>        </td><td width=20><td>设置栅格单位为 mm</td></tr>
<tr><td><tt>GRID MIL;</tt>       </td><td width=20><td>设置栅格单位为 mil</td></tr>
<tr><td><tt>GRID INCH;</tt>      </td><td width=20><td>设置栅格单位为 inch</td></tr>
<tr><td><tt>GRID FINEST;</tt>    </td><td width=20><td>设置栅格为最细的可能值</td></tr>
<tr><td><tt>GRID grid_size;</tt> </td><td width=20><td>以实际的单位定义栅格点之间的距离</td></tr>
<tr><td>                         </td><td width=20><td>the grid points in the </td></tr>
<tr><td><tt>GRID LAST;</tt>      </td><td width=20><td>设置栅格为最近使用的值</td></tr>
<tr><td><tt>GRID 缺省的;</tt>    </td><td width=20><td>设置栅格为标准值</td></tr>
<tr><td><tt>GRID grid_size grid_multiple;</tt> </td><td width=20><td></td></tr>
<tr><td>                         </td><td width=20><td>grid_size = 栅格距离</td></tr>
<tr><td>                         </td><td width=20><td>grid_multiple = grid factor</td></tr>
<tr><td><tt>GRID ALT ...;</tt>   </td><td width=20><td>定义替换栅格</td></tr>
</table>
<h2>例子</h2>
<pre>
Grid mm;
Set Diameter_Menu 1.0 1.27 2.54 5.08;
Grid Last;
</pre>
在这种情形下 您可以改回为上一次栅格定义 although 不知道 what the 定义 looked like.
比如
<pre>
GRID mm 1 10;
</pre>
指定栅格点之间的距离为 1 mm，并且显示每第 10 个栅格线。
<p>
请注意：GRID 命令的第一个数始终代表栅格距离，第二个参数（如果存在）代表栅格倍数。
<p>
GRID 命令可以包含多个参数：
<pre>
GRID inch 0.05 mm;
</pre>
在这种情形下，栅格距离先定义为 0.05 inch。然后光标的坐标 are chosen to be displayed in mm.
<pre>
GRID 缺省的;
</pre>
为当前的绘图类型设置栅格为标准值。
<pre>
GRID mil 50 2 lines on alt mm 1 mil;
</pre>
定义 a 50 mil grid displayed as lines (with only 每个 其它line 可见的), and sets the 替换 栅格尺寸 to 1 mm, but 显示 it in mil.
<p>
按 <tt>Alt</tt> 键 switches to the 替换 Grid. This can typically be a finer grid than the normal one, which allows you to quickly do some fine 定位ing in a 密集区域, 比如, where the normal grid might be too coarse. The 替换 grid remains active as long as the <tt>Alt</tt> 键 is held pressed down.
<h2>参数 别名</h2>
参数 别名 可以用于 定义 certain 参数 设置 to the GRID 命令，which can later be referenced by a 给定的 name. The 别名 can also be accessed by clicking on the GRID 按钮 and holding the 鼠标按键 pressed until the list pops up. A right click on the 按钮 also pops up the list.
<p>
The 语法 to 处理 这些 别名 is:
<dl>
<dt>
<tt>GRID = <i>name</i> <i>参数</i></tt>
<dd>
定义 alias with the 给定的 <i>name</i> to expand to the 给定的 <i>参数</i>. The <i>name</i> may consist of any number of 字母, digits and underlines, and is treated case insensitive. It must begin with a letter 或 underline and may not be one of the 选项 关键字.
<dt>
<tt>GRID = <i>name</i> @</tt>
<dd>
用给定的 <i>name</i> 定义别名 to expand to the 当前参数设置 of the 命令。
<dt>
<tt>GRID = ?</tt>
<dd>
Asks the 用户 to 输入名称 for defining an alias for the 当前参数设置 of the 命令。
<dt>
<tt>GRID = <i>name</i></tt>
<dd>
打开 GRID 对话框 and allows the 用户调整栅格参数 and 定义 an alias for them under the 给定的 <i>name</i>.
<dt>
<tt>GRID = <i>name</i>;</tt>
<dd>
删除别名 the alias with the 给定的 <i>name</i>.
<dt>
<tt>GRID <i>name</i></tt>
<dd>
Expands the alias with the 给定的 <i>name</i> and 执行 GRID 命令 with the resulting set of 参数. The <i>name</i> may be abbreviated and there may be 其它参数 before and after the alias (even other 别名). 请注意 in case <i>name</i> is an abbreviation, 别名 have precedence over 其它参数名称s of the 命令。
</dl>
例如：
<p>
<tt>GRID = MyGrid inch 0.1 lines on</tt>
<p>
定义 alias "MyGrid" which, 当 used as in
<p>
<tt>GRID myg</tt>
<p>
将 改变当前的栅格 to the 给定的 设置. Note the abbreviated use of the alias and the case insensitivity.


<a name=55>
<h1>GROUP</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义组。
<dt>
<b>语法</b>
<dd>
<tt>GROUP &#149;..</tt><br>
<tt>GROUP ALL</tt><br>
<tt>GROUP;</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Left&amp;Drag</mb> 定义了一个矩形的组。<br>
<mb>Shift+Left</mb> adds the new 组 to an 现有的 one.<br>
<mb>Ctrl+Left</mb> toggles 组 成员 of the 所选的对象。<br>
<mb>Ctrl+Shift+Left</mb> toggles 组 成员 of the higher level 对象.<br>
<mb>Right</mb> closes 组 多边形。
</dl>
<b>另请参阅</b> <a href=#36>CHANGE</a>，<a href=#42>CUT</a>，<a href=#76>PASTE</a>，<a href=#67>MIRROR</a>，<a href=#43>DELETE</a>
<p>
GROUP 命令用于定义 a 组 of 对象 for a 连续的 命令。 Also a whole 绘图 或 an 元素 可以被定义 作为 as a 组。所选的对象 - after activating the GROUP 命令 - by click&amp;dragging a rectangle 或 by 绘图 a 多边形 with the mouse。最简单的方法是用鼠标右键闭合多边形。Only 对象 from displayed layers can become part of 组.
<p>
关键字 <tt>ALL</tt> 可以用于定义包含整个绘图区域的组。
<p>
The 组 includes:
<ul>
<li>all 对象 whose 原点 is inside the 多边形
<li>all wires with 至少 one 端点 inside the 多边形
<li>all circles whose center is inside the 多边形
<li>all rectangles with any corner inside the 多边形
</ul>
<h2>Move Group</h2>
为了移动一个组 it is necessary to 选择 the MOVE 命令 with the 鼠标右键. 当 moving wires (tracks) with the GROUP 命令 that have only one 端点 in the 多边形, this 点 is moved while the 另一个 remains at 它的 previous 位置.
<p>
比如: 为了改变几个焊盘的形状, 选择 改变and SHAPE with the 鼠标左键 and 用鼠标右键选择组。
<p>
The 组 定义 remains until a 新绘图 is 载入的 or 命令
<pre>
GROUP;
</pre>
被执行.
<h2>扩展组</h2>
如果您 按 the <tt>Shift</tt> 键 together with any 鼠标点击 当 defining 组, the 新定义的组 将被加入到现有的组 (if any).
<h2>单独的对象</h2>
您可以 toggle 组 成员 of an 单独的对象 by clicking on it with the <tt>Ctrl</tt> 键 pressed. 如果您 also 按 the <tt>Shift</tt> 键 当 doing so, 组 成员 of the next higher level 对象 is toggled. 比如, 当 clicking on a net wire in a 原理图 with the GROUP 命令 and <tt>Ctrl+Shift</tt> pressed, 组 成员 of the entire 段 将 be toggled.


<a name=56>
<h1>HELP</h1>
<dl>
<dt>
<b>功能</b>
<dd>
有关当前命令的帮助。
<dt>
<b>语法</b>
<dd>
<tt>HELP</tt><br>
<tt>HELP command</tt>
<dt>
<b>键盘</b>
<dd>
<tt>F1: HELP</tt>   激活上下文敏感的帮助。
</dl>
该命令打开一上下文敏感的帮助窗口。
<p>
A <tt>command</tt> name within the HELP 命令 展示该命令的帮助页。
<h2>例</h2>
<pre>
HELP GRID;
</pre>
显示 GRID 命令的帮助页。


<a name=57>
<h1>HOLE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Add drill hole to a PCB图或 封装.
<dt>
<b>语法</b>
<dd>
<tt>HOLE drill &#149;..</tt>
</dl>
<b>另请参阅</b> <a href=#107>VIA</a>，<a href=#75>PAD</a>，<a href=#36>CHANGE</a>
<p>
该命令用于在 PCB 图或封装中定义装配孔（不同的层之间没有电气连接）。参数 drill 以实际的单位定义孔的直径。It may be up to 0.51602 inch (13.1 mm).
<h2>例</h2>
<pre>
HOLE 0.20 &#149;
</pre>
如果实际的单位为 "inch"，孔的直径将为 0.20 inch。
<p>
输入的值 for the 直径 (also used for via-holes and 焊盘) remains as a 预置ting for 连续的操作。可以用命令修改：
<pre>
CHANGE DRILL value &#149;
</pre>
孔只能在显示的情况下选择。
<p>
A hole 产生 a 符号 in the Holes layer as well as a circle with the 直径 of the hole in the Dimension layer. The relation between certain 直径s and 符号s is 定义ed 在“选项/设置/钻孔”中。The circle in the Dimension layer is used by the 自动布线器. As it 将保持一个（用户定义的）最小距离 between via-holes/wires and 尺寸标注线，it 将 自动地保持它到孔的距离。
<p>
在 tStop 和 bStop 层中，holes 生成 the solder stop mask, whose 直径 is 由<a href=#136>设计规则</a>决定。


<a name=58>
<h1>INFO</h1>
<dl>
<dt>
<b>功能</b>
<dd>
显示、修改对象属性。
<dt>
<b>语法</b>
<dd>
<tt>INFO &#149;..</tt><br>
<tt>INFO name ..</tt>
</dl>
<b>另请参阅</b> <a href=#36>CHANGE</a>，<a href=#95>SHOW</a>
<p>
INFO 命令在屏幕上显示关于对象属性的更多细节，比如线宽，层号，文字大小等等。也可以在此对话框中修改属性。
<p>
零件, 焊盘, smds, 引脚以及单元也可以按它们的名称选择，which is 特别有用 如果对象位于当前显示的窗口区域之外。请注意，当在原理图中按名称选择多单元零件时，您将需要输入完整的实例名称, consisting of part and 单元 name.
<p>
属性 of parts can be 所选的 by 输入 the 连接 of part 名称和属性名称，比如 <tt>R5&gt;VALUE</tt>。


<a name=59>
<h1>INVOKE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
从元件调用特定的符号。
<dt>
<b>语法</b>
<dd>
<tt>INVOKE &#149; orientation &#149;</tt><br>
<tt>INVOKE part_name gate_name orientation &#149;</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 镜像单元。<br>
<mb>Right</mb> 旋转单元。<br>
<mb>Shift+Right</mb> 反向旋转。
</dl>
<b>另请参阅</b> <a href=#41>COPY</a>，<a href=#29>ADD</a>
<p>
参见 ADD 命令 for an 解释 of Addlevel und Orientation.
<p>
INVOKE 命令用于选择 a 特定的单元 from a device which is 已经 in use and 放进原理图（例如 a power 符号 with Addlevel = Request).
<p>
单元 are activated in the 以下 way:
<ul>
<li>输入 part name (e.g. IC5) and 选择单元 from the 弹出的对话框 that appears.
<li>从键盘定义元件和单元名称（例如 INVOKE IC5 POWER）。
<li>用鼠标从元件选择一个已有的单元，然后从显示的弹出菜单选择期望的单元。
</ul>
最后的鼠标点击定位新的单元。
<p>
如果一个已经援用的单元 is 选择ed in the dialog，则缺省的按钮变为 "Show", and a click on it zooms the 编辑器窗口 in on the 所选的 单元，必要的话，会切换到不同的图纸。
<h2>不同图纸上的单元</h2>
如果一个单元 from a device on a 不同的图纸 is to be 添加ed到当前的图纸，零件的名称必须用 INVOKE 命令指定。在这种情形下 the right column of the 弹出菜单 shows the 图纸编号 where the 已经使用的单元 are placed.


<a name=60>
<h1>JUNCTION</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在相交的网络上放置一个点。
<dt>
<b>语法</b>
<dd>
<tt>JUNCTION &#149;..</tt>
</dl>
<b>另请参阅</b> <a href=#71>NET</a>
<p>
该命令用于在互相连接的网络的交点处绘制连接点。节点只能放置在网络上。如果放置在不同网络的交点。用户 is 给定的 the 选项 to 连接网络。
<p>
如果 a net wire 被放置在 a 点 where there are 至少两个其它 net wires 和/或引脚，连接点将自动地放置。此功能可以用 "<tt>SET AUTO_JUNCTION OFF;</tt>" 禁止，或通过取消选择“选项/设置/杂项/自动放置节点”来禁止。
<p>
在屏幕上，交接点至少用五个像素的直径显示。


<a name=61>
<h1>LABEL</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为总线和网络附加文本标签。
<dt>
<b>语法</b>
<dd>
<tt>LABEL [XREF] [orientation] &#149; &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选择层。<br>
<mb>Right</mb> 旋转标签。<br>
<mb>Shift+Right</mb> 反向旋转。
</dl>
<b>另请参阅</b> <a href=#70>NAME</a>，<a href=#35>BUS</a>，<a href=#52>FRAME</a>
<p>
总线或网络的名称 may be placed on a 原理图 in 任意位置 通过使用 LABEL 命令。当总线或网络是用鼠标点击的，相关的标签附在鼠标光标上并可以旋转、改变到另一层，或移动到不同的位置。第二个鼠标点击定义标签的位置。
<p>
标签的方向 may be defined textually using the usual 定义 as listed in the <a href=#29>ADD</a> 命令 (R0, R90 etc.).
<p>
总线和网络可以有任意数量的标签。
<p>
标签不能用 "CHANGE TEXT" 修改。
<p>
Labels 是由程序作为文字处理的，但它们的值对应到适当的总线或网络。如果一个总线或网络用 NAME  命令重命名，所有关联的标签会自动地重命名。
<p>
如果使用 SHOW 命令选择一个总线、网络或标签，则所有连接的总线、网络和标签被高亮显示。
<h2>对比参考标签</h2>
如果给定了可选的关键字 <tt>XREF</tt>，标签将成为"对比参考"标签。对比参考标签可以用于多图纸的原理图 to 指示 the next 图纸 a 特定的 net appears on (请注意 this only works for 网络，not for busses!).
关键字 <tt>XREF</tt> 主要用于脚本。Normally the setting is taken from what has previously been set with <a href=#36>CHANGE XREF</a>, or by clicking on the Xref 按钮 in the 参数工具栏。
<p>
The format in which a 对比参考标签 is displayed can be controlled through the "Xref label format" 字符串，which is defined in the "选项/设置/杂项" 对话框，或 with the <a href=#94>SET</a> 命令。 The 下列占位符 are defined, and can be used in any order:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>%F</tt></td>  <td width=20><td>允许绘制一个 标志 border around the 标签</td></tr>
<tr><td><tt>%N</tt></td>  <td width=20><td>网络的名称</td></tr>
<tr><td><tt>%S</tt></td>  <td width=20><td>下一个图纸号码</td></tr>
<tr><td><tt>%C</tt></td>  <td width=20><td>the column on the next 图纸</td></tr>
<tr><td><tt>%R</tt></td>  <td width=20><td>the row on the next 图纸</td></tr>
</table>
<p>
缺省的格式化字串为 <tt>"%F%N/%S.%C%R"</tt>。除了已定义的占位符，您也可以使用任何其它 ASCII 字符。
<p>
The 行和列 values only work if there 为<a href=#52>frame</a> on the next 图纸 on which the net appears. 如果 <tt>%C</tt> 或 <tt>%R</tt> is used and there is no frame on that 图纸, they 将 display a question mark (<tt>'?'</tt>).
<p>
当 determining the 行和列 of a net on a 图纸, 第一个 the column and then the row within that column 被考虑在内。Here XREF labels take precedence 高于普通标签，which again take precedence over net wires. For a higher 图纸编号，the frame 坐标 of the left- and topmost field are taken, while for a lower 图纸编号 那些 of the right- and bottommost field
are used.
<p>
The 方向 of a 对比参考 标签 定义了 whether it 将 点 to a "higher" 或 a "lower" 图纸 number. Labels with an 方向 of R0 或 R270 点 to the right 或 bottom border of the 绘图, and 将 therefore refer to a higher 图纸 number. Accordingly, labels with an 方向 of R90 或 R180 将 refer to a lower 图纸 number. 如果 a 标签 has an 方向 of R0 或 R270, but the net it is 附在 is not present on any higher 图纸, a reference to the next lower 图纸 is displayed instead (the same applies accordingly to R90 and R180). 如果 net appears only on the 当前的sheet, no 对比参考 is shown at all, and only the 网络名称 is displayed (surrounded by the 标志 border, if the format string 包含 the <tt>%F</tt> 占位符).
<p>
A 对比参考标签 that is placed on the end of a net wire 将连接到 the wire 以便 the wire is moved with the 标签，反之亦然。
<p>
The 对比参考 标签 格式化字串 is stored within the 原理图绘图文件。
<p>
对比参考标签可以通过 <a href=#36>CHANGE</a> 命令或者标签的 <i>Properties</i> 对话框改成普通标签。
<h2>选择层</h2>
不像其它命令（比如 WIRE），LABEL 命令 keeps track of 它上一次使用的层 by 自身. This has the advantage of 确保 that labels are 始终 绘制进正确的层，不管其它命令绘制进哪个层。The downside of this is that the usual way of setting the layer in a 脚本,比如
<pre>
LAYER <i>layer</i>;
WIRE (1 2) (3 4);
</pre>
不 work here. The layer needs to be 所选的 while the LABEL 命令 is 已经激活，which can be done like this
<pre>
LABEL <i>参数</i>
LAYER <i>layer</i>
<i>more 参数</i>;
</pre>
请注意，LABEL line 是<b>不</b>以 <tt>';'</tt> 终止的，and that the LAYER 命令 starts on a 新行。<br>
The 命令
<pre>
LABEL
LAYER <i>layer</i>;
</pre>
set the layer to use with subsequent LABEL 命令。


<a name=62>
<h1>LAYER</h1>
<dl>
<dt>
<b>功能</b>
<dd>
改变、定义层。
<dt>
<b>语法</b>
<dd>
<tt>LAYER layer_number</tt><br>
<tt>LAYER layer_name</tt><br>
<tt>LAYER layer_number layer_name</tt><br>
<tt>LAYER [??] -layer_number</tt>
</dl>
<b>另请参阅</b> <a href=#46>DISPLAY</a>
<h2>选择绘图层</h2>
带一个参数的 LAYER 命令用于改变当前层，i.e. the layer onto which wires, circles etc. 将 be drawn. 如果 LAYER 是从菜单选择的，a 弹出菜单 将 appear in which you may 改变to the 期望的层。如果从命令行输入，'layer_number' 可以是任何有效层的号码，and 'layer_name' may be the name of a layer as displayed in the 弹出菜单.
<p>
Certain layers are not available in 所有 modes.
<p>
请注意只有那些信号层（1～16）are available that 已被输入进 the layer setup in the <a href=#136>设计规则</a>.
<h2>定义层</h2>
带两个参数的 LAYER 命令用于定义一个新的层，或者重命名现有的层。如果您 type in at 命令 prompt e.g.
<pre>
LAYER 101 SAMPLE;
</pre>
you 用层号 101 和层名称 SAMPLE 定义一个新的层。
<p>
如果 a 封装 包含 layers not yet specified 在电路板图中, 这些层 are added to the board as soon as you place the 封装 into the board (ADD 或 REPLACE).
<p>
预定义的层 have a special function. 您可以改变它们的名称，但它们的功能（related with 它们的编号）保持不变。
<p>
如果您定义您自己的层，您应该仅使用大于 100 的数。Numbers below may be assigned for 特殊用途 in later EAGLE 版本s.
<h2>删除层</h2>
LAYER 命令 with the minus sign and a layer_number 删除 the layer with the 指定号码，举例来说：
<pre>
LAYER -103;
</pre>
删除层号为 103 的层。被删除的层必须为空。如果并非如此，则程序产生错误消息
<p>
"layer is not empty: #"
<p>
其中 "#" 代表层号。如果您想要避免任何错误消息 in a layer 删除操作 您可以使用 '??' 选项。This may be useful in 脚本s that try to 删除某个层，but don't consider it an error if any of 这些层不未空 或 not present at all.
<h2>EAGLE预定义的层</h2>
<h3>布局</h3>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>1   Top       </td><td width=20><td>Tracks, 顶层</td></tr>
<tr><td>2   Route2    </td><td width=20><td>内层</td></tr>
<tr><td>3   Route3    </td><td width=20><td>内层</td></tr>
<tr><td>4   Route4    </td><td width=20><td>内层</td></tr>
<tr><td>5   Route5    </td><td width=20><td>内层</td></tr>
<tr><td>6   Route6    </td><td width=20><td>内层</td></tr>
<tr><td>7   Route7    </td><td width=20><td>内层</td></tr>
<tr><td>8   Route8    </td><td width=20><td>内层</td></tr>
<tr><td>9   Route9    </td><td width=20><td>内层</td></tr>
<tr><td>10  Route10   </td><td width=20><td>内层</td></tr>
<tr><td>11  Route11   </td><td width=20><td>内层</td></tr>
<tr><td>12  Route12   </td><td width=20><td>内层</td></tr>
<tr><td>13  Route13   </td><td width=20><td>内层</td></tr>
<tr><td>14  Route14   </td><td width=20><td>内层</td></tr>
<tr><td>15  Route15   </td><td width=20><td>内层</td></tr>
<tr><td>16  Bottom    </td><td width=20><td>Tracks, 底层</td></tr>
<tr><td>17  Pads      </td><td width=20><td>Pads (通孔)</td></tr>
<tr><td>18  Vias      </td><td width=20><td>Vias (通孔)</td></tr>
<tr><td>19  Unrouted  </td><td width=20><td>鼠线（橡皮筋）</td></tr>
<tr><td>20  Dimension </td><td width=20><td>电路板外框 (circles for holes)</td></tr>
<tr><td>21  tPlace    </td><td width=20><td>丝印层，顶层</td></tr>
<tr><td>22  bPlace    </td><td width=20><td>丝印层，底层</td></tr>
<tr><td>23  t原点s  </td><td width=20><td>原点s, 顶层</td></tr>
<tr><td>24  b原点s  </td><td width=20><td>原点s, 底层</td></tr>
<tr><td>25  tNames    </td><td width=20><td>Service print, 顶层</td></tr>
<tr><td>26  bNames    </td><td width=20><td>Service print, 底层</td></tr>
<tr><td>27  tValues   </td><td width=20><td>元件值 VALUE，定层</td></tr>
<tr><td>28  bValues   </td><td width=20><td>元件值 VALUE，底层</td></tr>
<tr><td>29  tStop     </td><td width=20><td>Solder stop mask, 顶层</td></tr>
<tr><td>30  bStop     </td><td width=20><td>Solder stop mask, 底层</td></tr>
<tr><td>31  tCream    </td><td width=20><td>Solder cream, 顶层</td></tr>
<tr><td>32  bCream    </td><td width=20><td>Solder cream, 底层</td></tr>
<tr><td>33  tFinish   </td><td width=20><td>Finish, 顶层</td></tr>
<tr><td>34  bFinish   </td><td width=20><td>Finish, 底层</td></tr>
<tr><td>35  tGlue     </td><td width=20><td>Glue mask, 顶层</td></tr>
<tr><td>36  bGlue     </td><td width=20><td>Glue mask, 底层</td></tr>
<tr><td>37  tTest     </td><td width=20><td>Test and adjustment inf., 顶层</td></tr>
<tr><td>38  bTest     </td><td width=20><td>Test and adjustment inf. 底层</td></tr>
<tr><td>39  tKeepout  </td><td width=20><td>Nogo areas for 元件, 顶层</td></tr>
<tr><td>40  bKeepout  </td><td width=20><td>Nogo areas for 元件, 底层</td></tr>
<tr><td>41  tRestrict </td><td width=20><td>Nogo areas for tracks, 顶层</td></tr>
<tr><td>42  bRestrict </td><td width=20><td>Nogo areas for tracks, 底层</td></tr>
<tr><td>43  vRestrict </td><td width=20><td>Nogo areas for via-holes</td></tr>
<tr><td>44  Drills    </td><td width=20><td>导电通孔</td></tr>
<tr><td>45  Holes     </td><td width=20><td>非导电孔</td></tr>
<tr><td>46  Milling   </td><td width=20><td>Milling</td></tr>
<tr><td>47  Measures  </td><td width=20><td>测量</td></tr>
<tr><td>48  Document  </td><td width=20><td>一般文档</td></tr>
<tr><td>49  Reference </td><td width=20><td>参考标记</td></tr>
<tr><td>51  tDocu     </td><td width=20><td>元件文档，顶层</td></tr>
<tr><td>52  bDocu     </td><td width=20><td>元件文档, 底层</td></tr>
</table>
<h3>原理图</h3>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>91  Nets      </td><td width=20><td>网络</td></tr>
<tr><td>92  Busses    </td><td width=20><td>总线</td></tr>
<tr><td>93  Pins      </td><td width=20><td>连接点 for component 符号s</td></tr>
<tr><td>              </td><td width=20><td>with 额外（附加）信息</td></tr>
<tr><td>94  Symbols   </td><td width=20><td>Shapes of component 符号s</td></tr>
<tr><td>95  Names     </td><td width=20><td>Names of component 符号s</td></tr>
<tr><td>96  Values    </td><td width=20><td>Values/component types</td></tr>
<tr><td>97  Info      </td><td width=20><td>一般性的信息</td></tr>
<tr><td>98  Guide     </td><td width=20><td>Guide lines</td></tr>
</table>


<a name=63>
<h1>LOCK</h1>
<dl>
<dt>
<b>功能</b>
<dd>
锁定电路板图中的零件的位置和方向。
<dt>
<b>语法</b>
<dd>
<tt>LOCK &#149;..</tt><br>
<tt>LOCK name ..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> 应用命令到组。<br>
<mb>Shift+Left</mb> 逆转锁定操作（“解锁”零件）。<br>
<mb>Ctrl+Shift+Right</mb> “解锁”组中的所有零件。
</dl>
<b>另请参阅</b> <a href=#69>MIRROR</a>，<a href=#69>MOVE</a>，<a href=#90>ROTATE</a>，<a href=#97>SMASH</a>
<p>
LOCK 命令适用于 PCB 图中的零件，阻止它们移动、旋转或镜像。这对诸如连接器之类的东西有用，which 需要装在特定的位置 and 必须不被非故意的移动。
<p>
锁定的零件的原点显示为一个 'x' to have 一个可视的指示零件已锁定。
<p>
如果一个组包含锁定的零件 要移动，这些零件（together with any wires ending at their 焊盘) 将不随组合移动。
<p>
已锁定的零件的分离的文本仍可以单独地移动，但它们不能随着组移动。
<p>
零件也可以通过它们的名称选择，这特别有用，如果对象处于当前显示的窗口区域的外边。
<p>
“锁定”的零件可以通过并按住 <tt>Shift</tt>并在它上面点击来“解锁”（当然，已激活了 LOCK 命令）。


<a name=64>
<h1>MARK</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在绘图区域上定义一个标志。
<dt>
<b>语法</b>
<dd>
<tt>MARK &#149;</tt><br>
<tt>MARK;</tt>
</dl>
<b>另请参阅</b> <a href=#54>GRID</a>
<p>
MARK 命令允许您在绘图区域上定义一个点，并显示鼠标光标相对于屏幕左上角的点的坐标（with a leading 'R' 字符）。该命令 is useful 尤其是 当电路板尺寸s or cutouts 已被定义。输入 MARK; 开启或关闭标记。
<p>
在使用 MARK 命令之前，请选择足够细的栅格。


<a name=65>
<h1>MEANDER</h1>
<dl>
<dt>
<b>功能</b>
<dd>
平衡差分对的长度并增加信号段的长度。
<dt>
<b>语法</b>
<dd>
<tt>MEANDER [length] &#149; ..</tt><br>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Left</mb> 测量所选信号段的长度。<br>
<mb>Ctrl+Shift+Left</mb> 测量所选信号段的最大长度。<br>
<mb>Right</mb> 在对称和非对称蛇形线之间切换。
</dl>
<b>另请参阅</b> <a href=#91>ROUTE</a>
<p>
MEANDER 命令可以用于平衡构成差分对的信号的长度。为此, just 在差分对导线上点击 and 移动鼠标光标 离开选择的点。如果两个信号的长度有差异，并且当前的鼠标位置离开所选的点足够远，a "meander" shaped sequence of wires 将 be drawn that increases the 长度 of the shorter 信号段。An indicator 附在 the 鼠标光标 shows the target 长度 (which is the 长度 of the longer 信号 段), as well as the deviation (in percent) of the 两个 信号 from the target 长度.
<p>
The meander starts at the 第一个 click 点 and extends to the second 点 the mouse is moved to. The 最大的 (perpendicular) size of the meander is defined by the 距离 of the mouse to the meandered wire.
<p>
如果 a single 弯曲 不足以平衡长度，您可以添加 further 弯曲s at 不同的位置。
<h2>测量信号长度</h2>
如果您 click on a 信号 wire with the <tt>Ctrl</tt> 键 pressed，该信号段的长度将 be measured and displayed on the screen in a little indicator 在鼠标位置附近。您可以 use this to measure the 长度 of a 给定的信号段 and use that as the target 长度 for meandering an 其它段.
<p>
如果您 do the 测量 with <tt>Ctrl+Shift</tt> pressed, the 最大长度 of this or any previously 所选的段s 将 be taken. This 可以用于 easily determine the 最大长度 of several bus 信号 and then meandering each of them to that 长度.
<p>
At any time 您可以 enter a value in the 命令行 to set the target 长度.
<p>
当以给定的目标长度弯曲差分对时，the meander 首先尝试平衡差分对的两个信号段的长度，然后增加两个段的总长度。
<p>
To reset the 目标长度 您可以 either 重新启动 MEANDER 命令 或在命令行中输入值 <tt>0</tt>。
<h2>对称和非对称 meanders</h2>
默认情况下，a meander is 生成d symmetrical, 这意味着 it extends to both sides along the 所选的 wire. 如果 this is not what you need (either because there is only space on one side, 或 because the longer one of the wires of a 差分对 shall not be elongated) 您可以 切换到 asymmetric mode by 点击鼠标右键. The 实际的鼠标位置将决定 which side of the wire the meander extends to. Move the mouse around to find the proper 位置.
<h2>长度 公差</h2>
值 defined in the 设计规则 under "杂项/Max. 长度 difference in 差分对s" 用于选择颜色 当显示长度 deviations while 绘图 a meander. 如果百分比以绿色显示，the 各自的 段 lies within the 给定的 公差。否则百分比显示为红色。该参数缺省为 10mm。


<a name=66>
<h1>MENU</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定制文本命令菜单。
<dt>
<b>语法</b>
<dd>
<tt>MENU option ..;</tt><br>
<tt>MENU;</tt>
</dl>
<b>另请参阅</b> <a href=#31>ASSIGN</a>，<a href=#93>SCRIPT</a>
<p>
MENU 命令可以用于建立用户 specific 的命令菜单.
<p>
<tt>option</tt> 参数的完整语法规范为
<pre>
option    := command | submenu | 分隔符
command   := [ 图标 ] text1 [ ':' text2 ]
submenu   := [ 图标 ] text '{' option [ '|' option ] '}'
图标      := '[' filename ']'
分隔符 := '---'
</pre>
A 菜单选项 can be a 简单命令，比如
<pre>
MENU Display Grid;
</pre>
which 将 set the 菜单 to 命令s <tt>Display</tt> and <tt>Grid</tt>. <tt>Display</tt> and <tt>Grid</tt> are interpreted both as 菜单文本 and as 命令。<br>
它也可以是一个别名的命令，比如
<pre>
MENU 'MyDisp : Display None Top Bottom Pads Vias;' 'MyGrid : Grid mil 100 lines on;';
</pre>
which 将 set the 菜单 to 显示命令别名 <tt>MyDisp</tt> 和 <tt>MyGrid</tt> and actually 执行命令 sequence behind the <tt>':'</tt> of 每个选项（<tt>text2</tt>，see above）当 the 各自的 按钮 is clicked.<br>
It can also be a submenu 按钮 as in
<pre>
MENU 'Grid { Fine : Grid inch 0.001; | Coarse : Grid inch 0.1; }';
</pre>
which 将 定义 a 按钮 labeled <tt>Grid</tt> that, 当 clicked opens a submenu with the 两个 选项s <tt>Fine</tt> and <tt>Coarse</tt>.<br>
字符 <tt>'|'</tt> is only necessary as a separator in submenu entries (<tt>submenu</tt>, see above).
<p>
特别的选项 <tt>'---'</tt> 可以用于插入分隔符，有益于按钮分组。
<p>
命令按钮可以显示图标 by preceding the 按钮文字 with 图标的文件名，enclosed in square 方括号，比如
<pre>
MENU '[/path/to/myicon.png] Set a fine grid : Grid inch 0.001;';
</pre>
这里的按钮将只显示给定的图标, and "Set a fine grid" 将被用作 "tool tip" that gets displayed 当 the 鼠标光标 is moved over the 按钮. The filename needs not be enquoted additionally (like for masking spaces).<br>
如果图标用于弹出菜单，比如
<pre>
MENU 'Grid { [/path/to/myicon.png] Set a fine grid : Grid inch 0.001; }';
</pre>
那么，图标和文字均将显示，as with any 其它弹出菜单.<br>
如果图标的文件名不包括目录路径，它it is searched for 在当前的工作目录和EAGLE 的 'bin' 目录中搜索。
<p>
请注意 any <i>option</i> that 包含 more than a single word, 或 that might be interpreted as 一个命令，必须以单引号 enclosed 。如果您想要在脚本中使用 MENU 命令定义一个复杂的菜单，and 将 like to spread the 菜单 定义 over several lines to 使其更有可读性，您需要用一个反斜线字符 (<tt>'\'</tt>) 结束这一行，如
<pre>
MENU 'Grid {\
             Fine : Grid inch 0.001; |\
             Coarse : Grid inch 0.1;\
           }';
</pre>
<h2>例子</h2>
<pre>
MENU Move Delete 旋转 Route ';' Edit;
</pre>
将 建立 a 命令菜单 that 包含命令s Move...Route, the 分号, and the Edit 命令。
<p>
命令
<pre>
MENU;
</pre>
切换回到默认的菜单。
请注意 the ';' entry 应该始终 be added to the 菜单. It 用于终止很多命令。
<p>
复杂的例子：
<p>
<pre>
MENU '[draw.png] Draw {\
                        Wire {\
                               Continous : CHANGE STYLE Continuous; WIRE |\
                               DashDot :  CHANGE STYLE DashDot; WIRE |\
                               Help : HELP WIRE;\
                             }|\
                        Rectangle {\
                                    RECT |\
                                    Help : HELP RECT; \
                                  }\
                       }\
      [export.png] Export {\
                            Script : EXPORT SCRIPT |\
                            Image : EXPORT IMAGE\
                          }\
      MyScript : SCRIPT MyScript.scr;';
</pre>
这个菜单包含 Draw, Export 以及 MyScript 3 个条目，whereat Draw and Export have 子菜单 and are supplied with icons. Draw 包含 the 子菜单 Wire and Rectangle, whereat Wire 包含 the entries Continous, DashDot and Help and Rectangle 包含 the entries RECT (text and command RECT) and Help. <br>
The submenu of Export has the entries Script and Image.


<a name=67>
<h1>MIRROR</h1>
<dl>
<dt>
<b>功能</b>
<dd>
镜像对象和组。
<dt>
<b>语法</b>
<dd>
<tt>MIRROR &#149;..</tt><br>
<tt>MIRROR name..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> 镜像 组.
</dl>
<b>另请参阅</b> <a href=#90>ROTATE</a>，<a href=#63>LOCK</a>，<a href=#101>TEXT</a>
<p>
使用 MIRROR 命令，对象可以以 y 轴镜像。该命令的一个应用是 to 镜像 元件 to be placed on the reverse side of the board.
<p>
零件，焊盘，smds and 引脚也可以按它们的名称选择，which is 特别有用 if the 对象在当前显示的窗口区域之外。
<p>
属性 of parts can be 所选的 by 输入 the 连接 of 零件名称和属性名称，as in <tt>R5&gt;VALUE</tt>.
<p>
Components can be mirrored 仅当 the 适当的 t原点s/b原点s 层可见。
<p>
当 封装 are 所选的 for use with the MIRROR 命令，连接的 wires on the outer layers are mirrored，too (beware of 短路！）。
<p>
请注意内层（2...15）上的任何对象 don't 改变 their layer 当 they are mirrored. The same applies to 过孔。
<p>
如果零件被<a href=#63>locked</a> 则不能镜像，或者 if any of their 连接的 焊盘 将 extend outside the allowed area (in case you are using a <a href=#368>limited edition</a> of EAGLE).
<h2>镜像一个组</h2>
为了镜像一组元素，the 组 is 首先用 GROUP 命令定义 and 多边形 in the usual manner. The MIRROR 命令 is then 所选的 and the 鼠标右键 用于 execute the change. The 组 将 be mirrored about the vertical axis through the 下一个栅格点。
<p>
Wires，circles，焊盘 and 多边形s may not be 单独的ly mirrored 除非 included in a 组.
<h2>镜像文字</h2>
Text on the solder side of a 电路板（Bottom and bPlace layers) is mirrored 自动地 以便 it is readable 当 you look at the solder side of the board.
<p>
Mirrored text in a 原理图 将 be printed on the 其它side of 它的 原点 点，but it 将 still remain normally readable.


<a name=68>
<h1>MITER</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Miters wire joints.
<dt>
<b>语法</b>
<dd>
<tt>MITER [radius] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Left&amp;Drag</mb> 动态ally modifies the miter.<br>
<mb>Right</mb> toggles between round and straight mitering （斜接）.
</dl>
<b>另请参阅</b> <a href=#99>SPLIT</a>，<a href=#109>WIRE</a>，<a href=#91>ROUTE</a>，<a href=#79>POLYGON</a>
<p>
MITER 命令可以用于 take the edge off a 点 where 两个 wires join。两个已有的线需要处于同一层，并且具有相同的宽度和线型。
<h2>Mitering （斜接） a 点</h2>
如果您选择 a 点 where exactly 两个直线 join，an additional wire 将被插入在这两个导线之间，依照给定的 <i>半径</i>。如果您 click&amp;drag on such a 点 with the 鼠标左键，您可以 定义 the mitering （斜接） wire 动态ally.
<h2>Mitering （斜接） a wire</h2>
如果您 选择 a wire (which 也可能是一个弧） somewhere in the middle between 它的端点，and that wire is 连接ed 到 exactly 两个 其它直导线（one at each end），所选的 wire 将 be "re-mitered" 依照给定的 <i>半径</i>。如果您 click&amp;drag on such a wire with the 鼠标左键，您可以 定义 the mitering wire 动态ally.
<h2>直线与圆斜接 Straight versus round mitering</h2>
如果 <i>半径</i> is positive，the inserted wire 将 be an arc with the 给定的半径；如果它是负的，a 直线将 be inserted (imagine the <tt>'-'</tt> sign as indicating "straight"). 您可以通过点击鼠标右键在 toggle between round and straight mitering by pressing the .
<h2>Miter 半径 and wire 弯折样式</h2>
您在 MITER 命令给定的 <i>radius</i> 将被用于 所有其它命令 that draw wires in case the wire 弯折样式 is one of the 90 或 45 度样式。如果您 have set round mitering （斜接），it 将 适用于 both the 90 and 45 度弯折样式s; in case of straight mitering （斜接） only the 90 度弯折样式s are affected.


<a name=69>
<h1>MOVE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Moves 对象.
<dt>
<b>语法</b>
<dd>
<tt>MOVE &#149; &#149;..</tt><br>
<tt>MOVE name &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Left</mb> selects an 对象 at 它的 原点 或修改 modifies it（见注）.<br>
<mb>Ctrl+Right</mb> 选择组。<br>
<mb>Left&amp;Drag</mb> 立即移动对象。<br>
<mb>Ctrl+Right&amp;Drag</mb> 立即移动组。<br>
<mb>Center</mb> 镜像所选的对象或组。<br>
<mb>Right</mb> 旋转所选的对象或组。<br>
<mb>Shift+Right</mb> reverses the 旋转方向.
<dt>
<b>键盘</b>
<dd>
<tt>F7: MOVE</tt>   激活 MOVE 命令。
</dl>
<b>另请参阅</b> <a href=#55>GROUP</a>，<a href=#63>LOCK</a>，<a href=#83>RATSNEST</a>
<p>
MOVE 命令用于移动对象。
<p>
零件，焊盘，smds，引脚以及单元也可以由它们的名称选择，which is 特别有用 if the 对象处于当前显示的窗口区域的外边。请注意，当在一个原理图中按名称选择一个多单元的零件时，您将需要输入完整的实例名称，包含零件和单元名称。
<p>
零件的属性 can be 所选的 by 输入 the 连接 of part name and 属性 名称，as in <tt>R5&gt;VALUE</tt>.
<p>
元素仅当 适当的 t原点s/b原点s 层可见时能够移动。
<p>
MOVE 命令在不可见的层上没有效果（refer to DISPLAY）。
<p>
The ends of wires (tracks) that are 连接ed 到 an 元素 cannot be moved at this 点.
<p>
当 moving 元素s，连接的 wires (tracks) that belong to a 信号 are moved too (beware of short 电路s!).
<p>
如果 an 对象 is 所选的 with the 鼠标左键 and the 按钮 is not released，the 对象 can be moved immediately ("click&amp;drag"). The same applies to 组s 当 使用鼠标右键。在这个模式中，however，it is 不可能旋转或镜像对象 while moving it.
<p>
如果零件被 <a href=#63>locked</a>，它们是无法移动的，or if any of their 连接的焊盘 将 extend outside the allowed area (in case 您在使用 EAGLE 的 <a href=#368>limited edition</a>）。
<h2>Move Wires</h2>
If，以下 a MOVE 命令，two wires from 不同的信号短在一起，they are maintained as separate 信号 and the error 将 be flagged by the DRC 命令。
<h2>移动组</h2>
为了移动一个组，选择对象 are 定义ed in the normal way (GROUP 命令 and 多边形) before 选择 the MOVE 命令 and 点击 组 with the 鼠标右键。整个组 can now be moved and rotated with the 鼠标右键.
<h2>Hints for 原理图s</h2>
如果 a 供电 pin (Direction Sup) is placed on a net，the pin 名称 is allocated to this net。
<p>
Pins placed on each 其它are 连接ed together.
<p>
如果 未连接的引脚 of an 元素 are placed on 网络 或 引脚 then they are 连接的 with them.
<p>
如果 网络 are moved over 引脚 they are 无连接 with them.
<h2>选择 对象 at their 原点</h2>
通常，一个所选的对象 remains within the grid it has been 原始的ly placed on. 如果您按 <tt>Ctrl</tt> while 选择对象，the 点 where you have 所选的对象 is pulled towards the 光标 and 捕获进当前的栅格。
<p>
如果您选择 a <i>wire</i> somewhere in the middle （不在它的两个端点之一上） with <tt>Ctrl</tt> pressed，the 端点 stay fixed and 您可以 bend the wire，which 改变 it into an arc. The same way the curvature of an arc (which is basically a wire) can be modified.
<p>
如果您 选择 a <i>rectangle</i> at one of 它的 corners with <tt>Ctrl</tt> pressed，您可以 resize both the rectangle's width and height. 选择 an 边 of the rectangle with <tt>Ctrl</tt> pressed lets you resize the rectangle's width 或 height，分别. 选择 the rectangle at 它的 center with <tt>Ctrl</tt> pressed pulls it towards the 光标 and snaps it into the 当前的栅格。
<p>
如果您 选择 a <i>circle</i> at 它的 圆周 with <tt>Ctrl</tt> pressed，the center stays fixed and 您可以调整圆的直径。选择中心点 this way pulls it towards the 光标 and 捕获它进入当前的栅格。
<h2>Move part of a 图纸 to an 其它sheet</h2>
您可以把一个图纸的零件移动到同一原理图中的其它图纸 without affecting the board (in case <a href=#362>正向&amp;反向编序</a> is active) by defining a <a href=#55>GROUP</a> that 包含您想要移动的对象，选择 that 组 with the MOVE 命令 and then switching to the 期望的 sheet，with the MOVE 命令 still active and having 组 附在 the 光标。In the new 图纸 the MOVE 命令 将 be active again and 将 have the previously defined 组 附在 the 光标. Now place 组 as usual，and 所有 the affected 对象 将 be transferred from the 原始的 图纸 to the 当前的sheet. 如果当前的图纸与原图纸相同，什么都不会发生。
<p>
请注意 only wires that have both ends in 组 将 be transferred，and any part that is transferred takes 所有 它的电气连接 with it，即使 a net wire 附在 one of 它的引脚 is not transferred because 它的另一端 is not in 组. In case a pin in the new 图纸 has an electrical connection，but no 其它pin，wire 或 结点 附在 it to make this 可见的，a 结点 将 be 自动地 生成d at this 点.
<p>
这个过程甚至可以脚本化。比如
<pre>
edit .s1
group (1 1) (1 2) (2 2) (2 1) (1 1)
move (&gt; 0 0)
edit .s2
(0 0)
</pre>
将 切换到第一个图纸，定义一个组，用 MOVE 选择该组，切换到第二个图纸并放置组。Note the final <tt>(0 0)</tt>，which are 坐标 to the implicitly invoked MOVE 命令。
<p>
如果您只是想对图纸重新排序，请参阅 <a href=#48>EDIT</a> 命令。


<a name=70>
<h1>NAME</h1>
<dl>
<dt>
<b>功能</b>
<dd>
显示、改变名称。
<dt>
<b>语法</b>
<dd>
<tt>NAME &#149;..</tt><br>
<tt>NAME new_name &#149;</tt><br>
<tt>NAME old_name new_name</tt>
</dl>
<b>另请参阅</b> <a href=#95>SHOW</a>，<a href=#97>SMASH</a>，<a href=#105>VALUE</a>
<p>
NAME 命令用于显示或编辑所选对象的名称。
<p>
零件，元素，焊盘，smds，引脚以及单元也可以按它们的名称选择，which is 特别有用 if the 对象 is outside the 当前 显示的窗口区域. 其它对象类型 (e.g. nets，busses，信号) have to be clicked 第一个.
<h2>Library</h2>
当处于元件库编辑模式时，NAME 命令用于显示或编辑所选的 pad，smd，pin 或单元的名称。
<h2>自动命名</h2>
EAGLE 自动地生成名称：E$.. for 元素s，S$.. for 信号，P$.. for 焊盘，引脚 and smds。一般来说，it is convenient to substitute commonly used names (e.g. 1...14 for a 14-pin 双列封装）in place of 这些自动地生成的名称。自动命名 of parts can be controlled with <a href=#80>前缀</a>。
<h2>原理图</h2>
如果网络或总线 are to be renamed，the 程序 has to distinguish between 三个 cases because they can consist of several 段s placed on 不同的 图纸. Thus a 菜单 将 ask the user:
<p>
该段<br>
该图纸上的每个段<br>
全部图纸上的所有段
<p>
这些 questions appear in a 弹出菜单 if necessary and can be answered either by 选择 the 适当的 item with the mouse 或 by 按 适当的 热键 (T, E, A).
<h2>多边形</h2>
当重命名 a 信号 多边形 in a board, 您可以 choose whether to 重命名 only 这个多边形 (and thus move it from one 信号 into another), 或 to give the 整个信号 a 不同的 名称.


<a name=71>
<h1>NET</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在原理图上绘制网络。
<dt>
<b>语法</b>
<dd>
<tt>NET [net_name] &#149; [curve | @radius] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Right</mb> 改变 the wire 弯折样式（参见 <a href=#94>SET Wire_Bend</a>).<br>
<mb>Shift+Right</mb> reverses the direction of switching 弯折样式s.<br>
<mb>Ctrl+Right</mb> 在相应的弯折样式之间切换。
</dl>
<b>另请参阅</b> <a href=#35>BUS</a>，<a href=#70>NAME</a>，<a href=#38>CLASS</a>，<a href=#94>SET</a>
<p>
NET 命令用于绘制单独的连接 (网络) onto the Net layer of a 原理图 绘图. The 第一个 鼠标点击标记起始点 for the net, the second marks the 端点 of a 段. Two mouse clicks on the same 点 end the net.
<p>
如果 a net wire is placed at a 点 where there is already another net or 总线导线 或 a pin, the 当前的net wire 将 be ended at that 点。这个功能可以用 "<tt>SET AUTO_END_NET OFF;</tt>" 或取消选择”选项/设置/杂项/自动结束网络和总线"来禁止。
<p>
如果 a net wire is placed at a 点 where there are 至少 两个 other net wires and/or 引脚，将自动地放置一个结点。这个功能可以用 "<tt>SET AUTO_JUNCTION OFF;</tt>" 或取消选择”选项/设置/杂项/自动设置结点“。
<p>
如果给定了 <i>curve</i> 或 <i>@radius</i> 参数，an arc can be 绘制为网络的一部分（参见 <a href=#109>WIRE</a> 命令中的详细描述）。
<h2>选择总线信号</h2>
如果网络从总线起始，a 弹出菜单 opens from which one of the 总线信号 can be 所选的. The net then is named 相应的ly and becomes part of the same 信号. 如果 bus includes 几部分总线，a further 弹出菜单 opens from which the 相关的 part bus can be 所选的。
<h2>网络名称s</h2>
如果 NET 命令 is used with a 网络名称 then the net is named accordingly.
<p>
如果命令行中不包含网络名称 and the net is not started on a bus, then a 名称 in the form of N$1 is 自动地分配给网络。
<p>
Nets 或 net 段s that run over 不同的 图纸 of a 原理图 and use the same 网络名称 are 连接的.
<p>
网络名称不应包含逗号（<tt>','</tt>），because this is the delimiting 字符 in <a href=#35>busses</a>.
<h2>线宽</h2>
宽度 of the line drawn by the net 命令 may be changed with 命令:
<pre>
SET NET_WIRE_WIDTH width;
</pre>
(缺省值：6 mil).
<h2>反相的信号</h2>
The 名称 of an 反相的 信号 ("active low") can be displayed overlined if it is preceded with an exclamation mark (<tt>'!'</tt>），比如
<pre>
  !RESET
</pre>
which 会导致
<pre>
  _____
  RESET
</pre>
您可以 find further details about this in the 描述 of the <a href=#101>TEXT</a> 命令。


<a name=72>
<h1>OPEN</h1>
<dl>
<dt>
<b>功能</b>
<dd>
打开元件库进行编辑。
<dt>
<b>语法</b>
<dd>
<tt>OPEN library_name</tt>
</dl>
<b>另请参阅</b> <a href=#39>CLOSE</a>，<a href=#104>USE</a>，<a href=#48>EDIT</a>，<a href=#93>SCRIPT</a>
<p>
OPEN 命令用于打开一个已有的元件库，或者建立一个新的元件库。一旦元件库已经打开或已建立，an 现有的 or new 符号, device, 或 封装 may be edited.
<p>
该命令主要用于脚本文件。


<a name=73>
<h1>OPTIMIZE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Joins wire 段s.
<dt>
<b>语法</b>
<dd>
<tt>OPTIMIZE;</tt><br>
<tt>OPTIMIZE signal_name ..</tt><br>
<tt>OPTIMIZE &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> 优化组。
</dl>
<b>另请参阅</b> <a href=#94>SET</a>，<a href=#99>SPLIT</a>，<a href=#69>MOVE</a>，<a href=#91>ROUTE</a>
<p>
OPTIMIZE 命令 (which is only applicable in a board 绘图) joins wire 段s which lie in 一条直线。单独的段必须在同一层上，并且具有相同的宽度。该命令 is useful to 缩减对象数量 in a 绘图 and to facilitate moving a 完整的 track instead of 单独的 段s.
<p>
如果给定了信号名称，或者选择了某个信号，命令只影响各自的信号。
<p>
请注意，当用鼠标选择对象（或选择组）only 实际的 信号导线 are optimized。为优化所有导线 in a board 绘图, do
<pre>
OPTIMZE;
</pre>
<h2>自动优化</h2>
This wire optimization takes place 自动地 after MOVE, SPLIT, or ROUTE 命令，除非它用命令:
<pre>
SET OPTIMIZING OFF;
</pre>
禁止，或者你用 SPLIT 命令在同一位置点击了两次。
<p>
OPTIMIZE 命令 works in any case, 不管 Optimizing 是允许的或是禁止的。


<a name=74>
<h1>PACKAGE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为元件定义封装变体。
<dt>
<b>语法</b>
<dd>
<tt>PACKAGE</tt><br>
<tt>PACKAGE pname vname</tt><br>
<tt>PACKAGE pname@lname vname</tt><br>
<tt>PACKAGE name</tt><br>
<tt>PACKAGE -old_name new_name</tt><br>
<tt>PACKAGE -name</tt>
</dl>
<b>另请参阅</b> <a href=#40>CONNECT</a>，<a href=#100>TECHNOLOGY</a>，<a href=#80>前缀</a>
<p>
这个命令用于 in the 元件编辑模式 to 定义、删除或重新命名 a 封装变体。在原理图或 PCB 编辑器中，PACKAGE 命令 behaves exactly like "<a href=#36>CHANGE PACKAGE</a>".
<p>
Without 参数 a dialog is opened that 允许您选择 a 封装 and 定义该变体的名称。
<p>
参数 <tt>pname vname</tt> assign the 封装 <tt>pname</tt> to the 新的变体 <tt>vname</tt>.
<p>
The notation <tt>pname@lname vname</tt> fetches the 封装 <tt>pname</tt> from 元件库 <tt>lname</tt> and 建立s a 新的封装变体. This can also be done through the 元件库 对象'
<a href=#13>右键菜单</a> 或 via <i>拖拽</i> from the 控制面板的树状视图。
<p>
The single 参数 <tt>name</tt> switches to the 给定的 现有的封装变体。如果尚未定义封装变体，and a 封装 of the 给定的 名称 exists, a 新的封装变体 named '' (an "empty" 名称) with the 给定的 封装 将 be 建立d (this is for compatibility with 版本 3.5).
<p>
如果 <tt>-old_name new_name</tt> is 给定的, the 封装变体 <tt>old_name</tt> is renamed to <tt>new_name</tt>.
<p>
The single 参数 <tt>-name</tt> 删除 the 给定的 封装变体.
<p>
封装变体的名称将被追加到 the 器件 名称 to form the 完整的设备名称。如果 器件 名称 包含 the 字符 <tt>'?'</tt>, that 字符 将 被替换 by the 封装变体名称。请注意 the 封装变体 is processed after the 技术（工艺），所以如果 the 器件 名称 包含 neither a <tt>'*'</tt> nor a <tt>'?'</tt> 字符, the resulting device 名称 将 consist of <i>device_set_name</i><tt>+</tt><i>technology</i><tt>+</tt><i>package_variant</i>.
<p>
以下 the PACKAGE 命令，the CONNECT 命令用于定义 the correspondence of 引脚 in the 原理图 device to 焊盘 on the 封装.
<p>
当 <a href=#34>BOARD</a> 命令用于原理图编辑模式 to 建立 a 新的电路板图, 每个元件 is represented on a board layout with the 适当的封装 as already defined with the PACKAGE 命令。
<p>
<h2>无封装元件</h2>
元件也可以不分配封装而建立。比如 for frames, 供电 devices, external 或 其它 devices that only make sense in a 原理图. This can be done by creating a 器件 with adequate 单元，技术工艺 and 属性（如果必要） without using the PACKAGE 命令。如果 saved, a 无封装变体 is 建立d (with 空字串 as 变体名称）。一旦分配了封装，无封装变体 gets 覆写 by this and no further 无封装变体 can be 建立d. <br>
As soon as 单元 包含引脚, 无封装元件 only make limited sense （见下文）。
<h3>Supply devices</h3>
为了在原理图中使用供电符号，无封装的供电元件是常见的。The device 通常包含 exactly one 符号 with a <i>Sup</i> 引脚（参见 <a href=#77>PIN</a> 命令）。
<h3>External devices</h3>
这些 are for documenting assemblies in 原理图 that are not 相关的 for the board because they are externally added e.g for 仿真或测试用途。<br> 
这样的元件必须 be marked with the 属性 <b>_EXTERNAL_</b>（参见 <a href=#32>ATTRIBUTE</a> 命令）。值 is not 相关的. 在这种情形下，任何 单元 with 引脚 can be defined without a 封装. The atttribute must have been assigned in the 元件库, not in 原理图 或 board.
<p>
请注意 supply 或外部 devices are no longer 被看作 such, as soon as 封装 are assigned. The 引脚 have to be 连接的 with 焊盘 then.


<a name=75>
<h1>PAD</h1>
<dl>
<dt>
<b>功能</b>
<dd>
添加焊盘至封装。
<dt>
<b>语法</b>
<dd>
<tt>PAD [diameter] [shape] [orientation] [flags] ['name'] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Right</mb> 旋转焊盘。<br>
<mb>Shift+Right</mb> 反转旋转方向。
</dl>
<b>另请参阅</b> <a href=#98>SMD</a>，<a href=#36>CHANGE</a>，<a href=#46>DISPLAY</a>，<a href=#94>SET</a>，<a href=#70>NAME</a>，<a href=#107>VIA</a>，<a href=#136>设计规则</a>
<p>
PAD 命令用于为封装添加焊盘。当 PAD 命令处于激活状态时，一个焊盘符号附在光标上并可以在屏幕上移动。按 鼠标左键在当前位置放置焊盘。输入 a number 改变 焊盘直径（in the 实际的单位）。焊盘直径最大可达 0.51602 inch （13.1 mm）。
<p>
<tt>orientation</tt>（参见 <a href=#29>ADD</a> 中的描述）可以是范围 <tt>R0</tt>...<tt>R359.9</tt> 内的任何角度。<tt>S</tt> 和 <tt>M</tt> 标志不能用于此处。
<h2>例</h2>
<pre>
PAD 0.06 &#149;
</pre>
焊盘将 have a 直径 of 0.06 inch, provided the 实际的单位 "inch"。This 直径 remains as a 预置ting for 连续的操作。
<h2>焊盘形状</h2>
焊盘可以为以下形状之一
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Square    </td><td width=20><td></td></tr>
<tr><td>Round     </td><td width=20><td></td></tr>
<tr><td>Octagon   </td><td width=20><td>八角形</td></tr>
<tr><td>Long      </td><td width=20><td>加长elongated</td></tr>
<tr><td>Offset    </td><td width=20><td>elongated with 偏移 偏心焊盘</td></tr>
</table>
<p>
这些形状仅适用于外层（顶层和底层）。内层的形状始终为 "round".
<p>
With elongated 焊盘, the 给定的 直径 定义了 the smaller side of the 焊盘. The ratio between the 两个 sides of elongated 焊盘 is 给定的 by the 参数 Shapes/Elongation in the <a href=#136>设计规则</a> of the board （默认为 100%，which results in a ratio of 2:1).
<p>
焊盘形状或直径 can be 所选的 while the PAD 命令激活，或 it can be changed with the CHANGE 命令，例如：
<pre>
CHANGE SHAPE OCTAGON &#149;
</pre>
钻孔尺寸也可以用 CHANGE 命令改变。现有的 values then remain in use for successive 焊盘.
<p>
Because 显示 不同的焊盘形状 and drill holes in 它们的实际尺寸 slows down the 屏幕刷新，EAGLE lets you 改变 between real and fast 显示模式 通过使用 SET 命令：
<pre>
SET DISPLAY_MODE REAL | NODRILL;
</pre>
请注意，焊盘实际的形状和直径 将 决定 由 <a href=#136>设计规则</a> of the board the part is used in。
<h2>Arbitrary Pad Shapes</h2>
如果标准焊盘形状不能满足特定的封装，您可以通过围绕焊盘绘制多边形来建立任意的焊盘形状，or by 绘制 wires that have 一端连接ed 到焊盘。
<p>
The 以下条件 apply:
<ul>
<li>A 多边形 in a 信号层 (1-16) is considered 连接ed 到 a 焊盘 if 焊盘的中心 lies within the area defined by the 中心线 of the 多边形 wires.
<li>A wire in a 信号层 is considered 连接ed 到 a 焊盘 if one of 它的端点 coincides with the 焊盘的中心. Any wire 连接ed 到 the 其它end of such a wire is also electrically 连接ed 到 the 焊盘.
<li>Only <b>one</b> 多边形 per 焊盘 被考虑在内 on any 给定的 信号层. 如果 more than one 多边形 is 连接ed 到 the same 焊盘 in the 同一层, they 将 cause DRC errors.
<li>Polygons 连接ed 到 a 焊盘 将 be ignored by the 自动布线器 当 routing that 信号. They 将 be considered obstacles 当 routing 其它signals.
<li>Wires 连接ed 到 a 焊盘 将 be 处理d like any 其它signal wires by the 自动布线器, with the exception that they cannot be split.
<li>Solder stop masks are only 生成d for the 焊盘 自身. 如果 any additional solder stop mask is required, it has to be drawn 明确地 into the 各自的 layer(s).
<li>当 生成 thermals, the additional 多边形 形状 被考虑在内.
<li>如果 a 多边形 或 wire is 连接ed 到 more than one 焊盘 within a 封装, only one of the 焊盘 将 be considered electrically 连接ed 到 the 多边形或导线。其它焊盘将导致 DRC 错误，除非 they are all <a href=#40>连接ed 到 the same pin</a> in a device.
<li>如果 a 多边形 包含 more than one 焊盘, only one of them (the 第一个 one found in the 数据结构）将生成阻热（焊盘）. 如果 所有 of 这些 焊盘 shall 生成阻热（焊盘）, you need to draw separate 多边形s (one per 焊盘) that overlap accordingly.
<li>如果 several 焊盘 are 连接ed 到 the 同一个引脚 in a device, and 这些焊盘 have overlapping wires 或 多边形s in the 封装, DRC errors 将 occur 除非 the pin is actually 连接ed 到 a net (i.e. the 焊盘 are 连接ed 到 a 信号).
</ul>
<h2>Pad Names</h2>
Pad names are 生成d by the 程序 自动地 and can be changed with the NAME 命令。 The 名称 can also be defined in the PAD 命令。 Pad 名称 display can be turned on 或 off by means of 命令s:
<pre>
SET PAD_NAMES OFF | ON;
</pre>
This 改变will be 可见的 after the 下一次屏幕刷新。
<h2>Flags</h2>
The 以下 <i>flags</i> 可以用于 control the appearance of a pad:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>NOSTOP</tt>  </td><td width=20><td>不产生阻焊层</td></tr>
<tr><td><tt>NOTHERMALS</tt>       </td><td width=20><td>不产生阻热焊盘</td></tr>
<tr><td><tt>第一个</tt>            </td><td width=20><td>this is the "第一个" 焊盘 (which may be drawn with a special 形状)</td></tr>
</table>
<p>
默认情况下，a 焊盘 自动地 产生 solder stop mask and thermals as necessary。不过，在特殊情况下 it may be desirable to have 特定的 焊盘 not do this. The above <tt>NO...</tt> 标志s 可以用于 suppress 这些 features.<br>
如果 <a href=#136>设计规则</a> of a 给定的 board specify that the "第一个 焊盘" of a 封装 shall be drawn with a 特定的形状, the 焊盘 marked with the <tt>第一个</tt> 标志 将 be displayed that way.<br>
A newly started PAD 命令 resets 所有 标志s to their defaults. 一旦 a 标志 is 给定的 in the 命令行, it applies to 所有 以下 焊盘 placed within this PAD 命令 (except for <tt>第一个</tt>, which applies only to the 焊盘 immediately 以下 该选项).
<h2>Single Pads</h2>
Single 焊盘 in PCB 图 can be used only by defining a 封装 with one 焊盘. Via-holes can be placed in board but they don't have an 元素 名称 and therefore don't show up in the netlist.
<h2>Alter Package</h2>
It is not possible to 添加或删除 焊盘 in 封装 which are already used by a device, because this 将 改变the pin/焊盘 allocation defined with the CONNECT 命令。


<a name=76>
<h1>PASTE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Copies the contents of the 剪贴板 或 a 绘图 file to a 绘图.
<dt>
<b>语法</b>
<dd>
<tt>PASTE [ orientation ] &#149;</tt><br>
<tt>PASTE [ orientation ] [ offset ] filename &#149;</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 镜像 the contents of the 剪贴板.<br>
<mb>Right</mb> 旋转 the contents of the 剪贴板.<br>
<mb>Shift+Right</mb> reverses the 旋转方向.
</dl>
<b>另请参阅</b> <a href=#42>CUT</a>，<a href=#41>COPY</a>，<a href=#55>GROUP</a>
<p>
See the <a href=#29>ADD</a> 命令 for an explanation of <tt>orientation</tt>.
<p>
Using 命令s GROUP, CUT, and PASTE, parts of a 绘图/元件库 can be copied to the 相同或不同的绘图/元件库。当使用 PASTE 命令时，the 以下 points should be observed:
<ul>
<li>剪切/粘贴不能用于元件编辑模式。
<li>元素s and 信号 on a board 只能 be copied to a board.
<li>原理图上的零件，总线及网络只能复制到原理图中。
<li>焊盘和 smds 只能从封装复制到封装。
<li>Pins 只能 be copied from 符号 to 符号.
<li>当 copying parts, 元素s, 信号, 焊盘, smds and 引脚, a new 名称 is allocated if the previous 名称 is already used in the new 绘图.
<li>Buses retain the 相同名称s.
<li>Nets retain the 相同名称 as long as one of the net 段s has a 标签, 或 被连接到供电引脚。Otherwise a new 名称 is 生成d if the previous 名称 is already in use.
</ul>
如果 there are modified 版本s of 元件或封装 in the 剪贴板, an 自动的<a href=#103>元件库更新</a> 将 be started to 替换对象 in the 原理图 或 board with the ones from the 剪贴板.<br>
<b>请注意：您应该始终运行<a href=#47>设计规则检查</a> (DRC) and an <a href=#49>电气规则检查</a>（ERC）after a 元件库更新 已被执行！</b>
<h2>粘贴自文件</h2>
如果 a 文件名 is 给定的 in the 命令行，文件的完整内容 is pasted into the 当前的绘图. 如果给定的文件 is one of a 一致 PCB 图/原理图 pair, both 文件 将 be 粘贴进 the 相应的绘图s of the 当前编辑的工程。
如果您 set <tt>*</tt> instead of the 文件名 或 just 一个目录，a 文件对话框 opens in the 工程目录 或 the set directory.
<p>
假设您 have a 一致 PCB 图/原理图 pair that 包含 一个放大器的设计，where the 原理图可能包含几个图纸。Now if 您想要 place this 放大器 several times into 您的 工程, 您可以 simply do
<pre>
PASTE 100 amplifier.sch &#149;
PASTE 200 amplifier.sch &#149;
</pre>
这个例子 also shows the use of an <tt>offset</tt>, which adds the 给定的 值 to 所有 part and 网络名称s in the pasted 文件 (除非 they retain their 名称, see below). So the 第一个 amplifier channel 将 have 所有 parts and 网络 named starting at 100, while the second one 将 have them start at 200. 如果 no 偏移 is 给定的, new names are 生成d as necessary.
<p>
Just like in a normal PASTE 操作, 当 pasting from 一个文件, 网络 that have a 标签 或 are 连接ed 到 a 供电 pin, retain their 名称 while 所有 others 将 get newly 生成d names. It is enough for a net to retain 它的 名称 if it is labeled 或 连接ed 到 a 供电 pin on one 图纸, 即使 it appears on several 图纸.
<p>
除非 the PASTE 操作 is done in a 脚本文件, you 将 be offered a dialog that shows 所有 the 网络名称s. By clicking on the names in the "New name" column 您可以 edit 单独的 网络名称s. Icons indicate whether a net in the pasted 绘图 has a 标签 或 a 供电 pin, and whether the net 将 be 连接ed 到 an 现有的 net with the 相同名称 in the edited 绘图.
<p>
如果您 paste a 原理图 into a 原理图 绘图, 所有 图纸 of the pasted 原理图 将 be added as separate new 图纸 to the edited 绘图 (this is not possible in the <a href=#368>Light edition</a>, which can 处理 only a single 原理图 图纸).
The 相应的 board (if any) 将 be placed below the 现有的 content of the edited board 绘图. 如果 您想要 have explicit control over where the board is placed, 您可以 perform the PASTE 操作 在电路板图中, 这种情况下， the 原理图 图纸 将 be added just the same, but the board 将 be 附在 the 鼠标光标 and you 将 be able to place it exactly where you want it.
<p>
For global 设置 in the 文件 like layer 定义, netclasses, 设计规则 and 自动布线器 参数 this holds: The 设置 of the 当前 opened 绘图 are kept. This means e.g., that for the pasted data the restring 参数 of 当前的绘图 are used which can lead to differences compared to source 绘图. Please consider running a <a href=#47>DRC</a> for this.<br>
Additional 设置 like additioal layers 或 netclasses are added to the current 绘图, of course.
<p>
您也可以 paste from 一个文件 using <i>拖拽</i>, by 按 <tt>Ctrl</tt> 键 当 dropping the 文件。
<p>
如果 文件名 could be mistaken as an 方向 或 an 偏移 值, 您可以 enclose it in 单引号s.


<a name=77>
<h1>PIN</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义符号的连接点。
<dt>
<b>语法</b>
<dd>
<tt>PIN 'name' options &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Right</mb> 旋转引脚。<br>
<mb>Shift+Right</mb> 反转旋转方向.
</dl>
<b>另请参阅</b> <a href=#70>NAME</a>，<a href=#95>SHOW</a>，<a href=#36>CHANGE</a>
<h2>选项</h2>
可能的选项有如下六个：
<p>
Direction<br>
Function<br>
Length<br>
Orientation<br>
Visible<br>
Swaplevel
<h3>Direction</h3>
The logical direction of 信号 flow. It is essential for the 电气规则检查（ERC）and for the automatic wiring of the power 供电 引脚. The 以下 possibilities may be used:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>NC   </td><td width=20><td>无连接</td></tr>
<tr><td>In   </td><td width=20><td>输入</td></tr>
<tr><td>Out  </td><td width=20><td>输出(totem-pole)</td></tr>
<tr><td>IO   </td><td width=20><td>输入/输出（双向）</td></tr>
<tr><td>OC   </td><td width=20><td>集电极/漏极开路</td></tr>
<tr><td>Hiz  </td><td width=20><td>高阻输出（例如：三态）</td></tr>
<tr><td>Pas  </td><td width=20><td>无源（用于电阻，电容等）</td></tr>
<tr><td>Pwr  </td><td width=20><td>电源输入引脚（Vcc, Gnd, Vss, Vdd, 等)）</td></tr>
<tr><td>Sup  </td><td width=20><td>general 供电 pin (e.g. for ground 符号)</td></tr>
</table>
<p>
缺省值：IO
<p>
如果 Pwr 引脚 are used on a 符号 and a 相应的 Sup pin exists on the 原理图, 网络 are 连接的 自动地. The Sup pin is not used for 元件.
<h3>Function</h3>
The graphic 呈现 of the pin:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>None    </td><td width=20><td>no special function</td></tr>
<tr><td>Dot     </td><td width=20><td>inverter 符号</td></tr>
<tr><td>Clk     </td><td width=20><td>时钟符号</td></tr>
<tr><td>DotClk  </td><td width=20><td>反相的时钟符号</td></tr>
</table>
<p>
缺省值：None
<h3>长度</h3>
长度 of the pin 符号:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Point   </td><td width=20><td>pin with no 连接 或 名称</td></tr>
<tr><td>Short   </td><td width=20><td>0.1 inch long 连接</td></tr>
<tr><td>Middle  </td><td width=20><td>0.2 inch long 连接</td></tr>
<tr><td>Long    </td><td width=20><td>0.3 inch long 连接</td></tr>
</table>
<p>
缺省值：Long
<h3>Orientation</h3>
The 方向 of the pin. 当 放置 引脚 手动 the 鼠标右键 旋转引脚。参数 "orientation" 主要用于脚本文件：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>R0    </td><td width=20><td>连接点在右面</td></tr>
<tr><td>R90   </td><td width=20><td>连接点在上面</td></tr>
<tr><td>R180  </td><td width=20><td>连接点在左面</td></tr>
<tr><td>R270  </td><td width=20><td>连接点在下面</td></tr>
</table>
<p>
缺省值：R0
<h3>Visible</h3>
该参数引脚和/或焊盘的名称是否在原理图中可见：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Off    </td><td width=20><td>引脚和焊盘 名称 not drawn</td></tr>
<tr><td>Pad    </td><td width=20><td>焊盘 名称 drawn, pin 名称 not drawn</td></tr>
<tr><td>Pin    </td><td width=20><td>pin 名称 drawn, 焊盘 名称 not drawn</td></tr>
<tr><td>Both   </td><td width=20><td>引脚和焊盘 名称 drawn</td></tr>
</table>
<p>
缺省值：Both
<h3>Swaplevel</h3>
An 整数 number。Swaplevel = 0 指明一个引脚不能与其它（引脚）互换。The allocation of a number 大于 0 indicates that a pin may be swapped with any 其它 in the same 符号 with the same swaplevel number。例如：一个 NAND 单元的输入 could be allocated the same swaplevel number as they are all identical.
<p>
缺省值：0
<h2>使用 PIN 命令</h2>
PIN 命令用于 定义连接点 on a 符号 for 网络. Pins are drawn onto the 符号层 while additional 信息 appears on the Pins layer。单独的引脚 may be assigned various 选项s in the 命令行. The 选项s can be listed in any order or 忽略ted. 在这种情形下 缺省的选项 are valid.
<p>
如果 a 名称 is used in the PIN 命令，it must be enclosed in apostrophes. Pin names can be changed in the 符号 编辑模式 using the NAME 命令。
<h2>自动命名</h2>
引脚可以被自动地编号 in the 以下 way。为了在一符号上放置引脚 D0...D7 on a 符号，第一个引脚用下面的命令放置：
<pre>
PIN 'D0' *
</pre>
and the 位置 for the 其它引脚 defined with a 鼠标点击for each.
<h2>预定义选项 with CHANGE</h2>
所有选项均可以用 CHANGE 命令预先定义。The 选项s remain in use until edited by a new PIN 或 CHANGE 命令。
<p>
SHOW 命令可以用于显示引脚选项 选项s such as Direction and Swaplevel.
<h2>Pins with the 相同名称</h2>
如果 it is required to 定义几个引脚 in a component with the 相同名称, the 以下 procedure can be used:
<p>
例如，suppose that 三个 引脚 are required for GND。引脚 are allocated the names GND@1，GND@2 和 GND@3 during the 符号 定义。Then only the 字符 before the "@" sign appear in the 原理图.
<p>
It is not possible to 添加或删除引脚 in 符号s which are already used by a device 因为这将改变the pin/焊盘 allocation defined with the CONNECT 命令。
<h2>Pin Lettering</h2>
The 位置 of 引脚和焊盘的名称 on a 符号 相对于 the 引脚连接点 can not be changed, nor can the text size. 当 defining new 符号s please ensure their size is 一致 with 现有的 符号s.
<h2>反相的 引脚</h2>
The 名称 of an 反相的 pin ("active low") can be displayed overlined if it is preceded with an exclamation mark (<tt>'!'</tt>），比如
<pre>
  !RESET
</pre>
which 会导致
<pre>
  _____
  RESET
</pre>
您可以在 <a href=#101>TEXT</a> 命令的描述中找到更多关于 this 的信息。


<a name=78>
<h1>PINSWAP</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Swap 引脚 或 焊盘.
<dt>
<b>语法</b>
<dd>
<tt>PINSWAP &#149; &#149;..</tt>
</dl>
<b>另请参阅</b> <a href=#77>PIN</a>
<p>
PINSWAP 命令用于交换引脚 within the same 符号 which have been allocated the same swaplevel (&gt; 0). Swaplevel, see PIN 命令。If a board is tied to a 原理图 via <a href=#362>反相编序</a> 两个焊盘 只能 be swapped if the related 引脚 are swappable.
<p>
On a board without a 原理图 this 命令 permits 两个焊盘 in the same 封装 to be swapped. The Swaplevel is not checked 在这种情形下.
<p>
Wires 附在 the swapped 引脚 are moved with the 引脚 以便 short 电路s may appear. Please perform the DRC and correct possible errors.


<a name=79>
<h1>POLYGON</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Draws 多边形 areas.
<dt>
<b>语法</b>
<dd>
<tt>POLYGON [signal_name] [width] &#149; [curve | @radius] &#149; &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选层。<br>
<mb>Right</mb> 改变 wire 弯折样式（参见 <a href=#94>SET Wire_Bend</a>).<br>
<mb>Shift+Right</mb> reverses the direction of switching 弯折样式s.<br>
<mb>Ctrl+Right</mb> 在相应的弯折样式之间切换。<br>
<mb>Ctrl+Left</mb> 当 放置 a wire 端点 定义了 arc 半径.<br>
<mb>Left</mb> twice at the same 点 closes the 多边形.
</dl>
<b>另请参阅</b> <a href=#36>CHANGE</a>，<a href=#43>DELETE</a>，<a href=#83>RATSNEST</a>，<a href=#89>RIPUP</a>，<a href=#109>WIRE</a>，<a href=#68>MITER</a>
<p>
POLYGON 命令用于绘制多边形区域。多边形 in the layers Top, Bottom, and Route2..15 are 被看作 信号。多边形 in the layers t/b/vRestrict are 受保护的区域 for the 自动布线器.
<p>
如果给定了 <i>curve</i> 或 <i>@radius</i> 参数，an arc can be drawn as part of the 多边形 定义（参见 <a href=#109>WIRE</a> 命令中的详细描述）。
<h2>注</h2>
You should avoid using very small values for the <i>width</i> of a 多边形, because this can cause extremely large amounts of data 当 processing a 绘图 with the <a href=#116>CAM 处理器</a>.<br>
多边形 <i>width</i> 应始终 be 大于输出设备的硬件分辨率。例如 当 using a Gerber photoplotter with a typical resolution of 1 mil，多边形 <i>width</i> should not be smaller than, say, 6 mil. Typically you should keep the 多边形 <i>width</i> in the same 范围 as 您的 其它wires.
<p>
如果 您想要 give the 多边形 a 名称 that starts with a digit (as in <tt>0V</tt>），您必须 enclose the 名称 in 单引号s to distinguish it from a <i>width</i> 值.
<p>
参数 <tt>Isolate</tt> 与 <tt>Rank</tt> only have a meaning for 多边形s in layers Top...Bottom.
<h2>外框模式或真实模式</h2>
从属于<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>1.&nbsp;Outlines   </td><td width=20><td>仅显示由用户定义的外框。</td></tr>
<tr><td>2.&nbsp;Real&nbsp;mode  </td><td width=20><td>all of the areas are 可见的 as 已计算的 by程序.</td></tr>
</table>
<p>
在“外框”模式下，多边形以点状线绘制，以便 it can be distinguished from 其它wires。PCB 图文件仅包含“外框”。
<p>
缺省的显示模式为“外框” as the calculation 为time consuming 操作。
<p>
当绘图由 CAM 处理器生成时，所有多边形被计算。
<p>
<a href=#83>RATSNEST</a> 命令启动多边形的计算（这可以 be 关闭 with <tt><a href=#94>SET</a> POLYGON_RATSNEST OFF;</tt>）。点击 STOP 按钮终止多边形的人计算。已计算的多边形显示为“真实模式”，所有其它多边形则以“外框模式”显示。
<p>
<a href=#89>RIPUP</a> 命令改变显示模式 of a 多边形 to "outline".
<p>
改变操作s 重新计算 a 多边形 if it was shown in "real mode" before.
<h2>Other 命令 and Polygons</h2>
Polygons are 所选的 at their edges (like wires).
<p>
SPLIT: 为多边形插入一个新的边。
<p>
DELETE: 删除一个多边形的角（如果只有三个角 are left the whole 多边形 is deleted).
<p>
CHANGE LAYER: 改变整个多边形的所在层。
<p>
CHANGE WIDTH: 改变整个多边形的宽度参数。
<p>
MOVE: 移动一个多边形的边或角（like wire 段s).
<p>
COPY: 复制整个多边形。
<p>
NAME: 如果 多边形 is located in a 信号层 信号的名称 is changed.
<h2>参数</h2>
<h3>宽度</h3>
多边形的边的线宽。Also used for filling.
<h3>Layer</h3>
多边形可以绘制在任何层内。信号层中的多边形s belong to a 信号 and keep the 距离 defined in the 设计规则规则 and 网络分类es from 其它信号。对象 in the tRestrict 层 are substracted from 多边形s in the Top layer (the same applies to bRestrict/Bottom). This allows you, for instance, to 生成 "negative" text on a ground area.
<h3>Pour</h3>
Fill mode (Solid [default], Hatch or Cutout).
<h3>Rank</h3>
定义 how 多边形s are subtracted from each other. Polygons with a lower 'rank' appear "第一个" and thus get subtracted from 多边形s with a higher 'rank'.<br>
有效的 ranks 为 <tt>1..6</tt>. Polygons with the same rank are checked against each other by the <a href=#47>设计规则检查</a>. The rank 参数 only has a meaning for 多边形s in 信号层s (<tt>1..16</tt>) drawn in a board and 将 be ignored for any 其它多边形s. 默认为 <tt>1</tt>.
<h3>Thermals</h3>
定义如何连接焊盘与 smds (On = thermals are 生成d [缺省的], Off = no thermals).
<h3>Spacing</h3>
Distance between fill lines 当 Pour = Hatch (缺省值：50 Mil).
<h3>Isolate</h3>
Distance between 多边形区域 and 其它信号 或 对象 in the 尺寸 layer (缺省值：0). 如果一个特定的多边值 that exceeds that from the design 规则 and 网络分类es, the larger 值 将 be taken. See also <a href=#136>设计规则</a> under <b>Distance</b> and <b>Supply</b>, 分别. <b>请注意 如果您 give a 多边形 an Isolate 值 that exceeds that from the design 规则 and 网络分类es, small gaps may result between the 已计算的 多边 对象 belonging to the same 信号 as the 多边形 自身, which may lead to problems during manufacturing! It is therefore 推荐的 to leave 该参数 at 0, 除非 you know exactly what you are doing!</b>
<h3>Orphans</h3>
As a 多边形 自动地 keeps a certain 距离 to 其它信号 it can happen that the 多边形 is separated into a number of smaller 多边形s. 如果 such a 多边形 has no 电气连接 to any 其它(non-多边形) 对象 of 它的 信号, the 用户 might want it to disappear. With the 参数 Orphans&nbsp;=&nbsp;Off [缺省的] 这些 isolated zones 将 disappear. With Orphans&nbsp;=&nbsp;On they 将 remain。如果一个信号 consists only of 多边形s and has 没有其它电气上连接的对象，所有 多边形 parts 将 remain, independent of the setting of the Orphans 参数.
<p>
Under certain circumstances, 尤其是 with Orphans&nbsp;=&nbsp;Off, a 多边形 can disappear completely. In that case the 多边形的原始外框 将 be displayed on the screen, to make it possible to delete 或 otherwise modify it. 当 going to the 打印机 或 CAM 处理器 这些 outlines 将 not be drawn 以便 avoid short 电路s. A 多边形 is also displayed with 它的 原始的 outlines if-多边形 对象 in the 信号, but none of them is 连接ed 到 the 多边形.
<h2>Thermal 尺寸s</h2>
The width of the conducting path in the thermal 符号 is 已计算的 asows:
<ul>
<li>Pads: half the 钻孔直径 of the 焊盘
<li>Smds: half the smaller side of the smd
<li>至少 the width of the 多边形
<li>a 最大的 of twice the width of the 多边形
</ul>
<h2>Outlines data</h2>
The special 信号 名称 _OUTLINES_ gives a 多边形 certain 属性 that are 用于生成 <a href=#133>outlines data</a>（例如 for milling prototype boards）。此名称 should not be used otherwise.
<h2>Hatched 多边形和鼠线 </h2>
依赖于 <i>spacing</i> 参数的值, 焊盘, smds, 过孔 and wires inside a hatched 多边形 that 连接到同一信号 as the 多边形 may "fall through" the raster and thus have 鼠线 生成d to indicate their 连接到信号。
<p>
当计算 whether such an 对象 is actually solidly 连接ed 到 the hatched 多边形, it is 减小d to several “控制点”。For a round 焊盘, for instance, 这些 将 be the north, east, west and south 点 on the 焊盘的圆周, while for a wire it's the 两个端点。A solid 连接 is considered to exist if there is 至少 one line in the 计算ed 多边形 (outline or hatch line) that runs through 这些 points with 它的 center line.
<p>
Thermal and annulus rings inside a hatched 多边形 that do not have solid contact to any of the 多边形 lines are not 生成d.
<h2>Polygon cutouts</h2>
The special pour style "Cutout" makes a 多边形 be subtracted from all 其它信号多边形 within the 同一层, independent of their Rank.
<p>
仅信号层内的多边形 can have the pour style "Cutout".
<p>
The outlines of a cutout 多边形 are 始终 drawn as dotted lines on the screen，甚至在信号多边形用 <a href=#83>RATSNEST</a> 计算之后。
<p>
The wire width of a cutout 多边形 被考虑在内 当 subtracting it from 其它信号多边形。It may be arbitrarily small (even zero) without causing large amounts of CAM data (as opposed to "solid" 多边形s, where the 线宽不应太小）。


<a name=80>
<h1>前缀</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为一个符号名称定义前缀。
<dt>
<b>语法</b>
<dd>
<tt>前缀 prefix_string;</tt>
</dl>
<b>另请参阅</b> <a href=#40>CONNECT</a>，<a href=#74>PACKAGE</a>，<a href=#105>VALUE</a>
<p>
该命令 is used in the 元件编辑模式 to determine the initial 字符 of 自动地生成的符号名称 当符号用 ADD 命令放进原理图。
<h2>例</h2>
<pre>
前缀 U;
</pre>
如果该命令 is used 当 editing, 例如, 一个 7400 元件，then 单元 which are later placed in a 原理图 using the ADD 命令 将 be allocated the names  U1, U2, U3 in sequence. 这些 names may be changed later with the NAME 命令。


<a name=81>
<h1>PRINT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
打印绘图至系统打印机。
<dt>
<b>语法</b>
<dd>
<tt>PRINT [factor] [-limit] [options] [;]</tt>
</dl>
<b>另请参阅</b> <a href=#116>CAM 处理器</a>，<a href=#112>打印至系统打印机</a>
<p>
PRINT 命令打印当前编辑的绘图到系统打印机。
<p>
颜色和填充类型 are used as set in the 编辑器窗口。这可以由 <tt>SOLID</tt> 和 <tt>BLACK</tt> 选项改变。The 调色板 used for the printout is 始终 that for 白色背景。
<p>
如果您想要打印焊盘和过孔 "filled" (without the drill holes being 可见的），使用命令
<pre>
<a href=#94>SET</a> DISPLAY_MODE NODRILL;
</pre>
<b>请注意，在通过 PRINT 命令打印时，PCB 图中的多边形不会自动地计算！仅绘制外框。为了以它们的计算的形状打印多边形，您必须在打印之前使用 <a href=#83>RATSNEST</a> 命令。</b>
<p>
您可以输入 a <tt>factor</tt> 以缩放输出。
<p>
The <tt>limit</tt> 参数 is the 最大的页数 you want the 输出 to use。The number has to be preceded with a <tt>'-'</tt> to distinguish it from the <tt>factor</tt>. In case the 绘图 不 fit on the 给定的页数，the <tt>factor</tt> 将被缩小直到它合适。设置该参数为 <tt>-0</tt> 以允许任意页数（and thus making sure the printout uses exactly the 给定的比例系数).
<p>
如果 PRINT 命令没有以 <tt>';'</tt> 结束，<a href=#113>打印对话框</a> 将允许您设置打印选项。请注意 选项s entered via the 命令行 将 not be stored permanently in the 打印设置 除非 they have been confirmed in the <a href=#113>打印对话框</a>（即，如果命令 has not been terminated with a <tt>';'</tt>). 
<p>
The 以下 <tt>options</tt> exist:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>MIRROR</tt>        </td><td width=20><td>镜像输出</td></tr>
<tr><td><tt>ROTATE</tt>        </td><td width=20><td>旋转 90&deg; 输出</td></tr>
<tr><td><tt>UPSIDEDOWN</tt>    </td><td width=20><td>旋转绘图 180&deg;。Together with <tt>ROTATE</tt>, the 绘图 is rotated by a total of 270&deg;</td></tr>
<tr><td><tt>BLACK</tt>         </td><td width=20><td>忽略层的颜色设置，所有对象以黑色打印</td></tr>
<tr><td><tt>SOLID</tt>         </td><td width=20><td>忽略层的填充样式设置，所有对象以实心打印</td></tr>
<tr><td><tt>CAPTION</tt>       </td><td width=20><td>在页面底部打印一标题</td></tr>
<tr><td><tt>文件</tt>          </td><td width=20><td>将输出打印到一个文件；该选项必须立即跟着文件名</td></tr>
<tr><td><tt>PRINTER</tt>       </td><td width=20><td>打印一指定的打印机；打印机名称 must immediately follow 该选项</td></tr>
<tr><td><tt>PAPER</tt>         </td><td width=20><td>打印在给定的页面尺寸上；页面尺寸 must immediately follow 该选项</td></tr>
<tr><td><tt>SHEET</tt>        </td><td width=20><td>打印给定的图纸范围；范围 (from-to) must immediately follow 该选项</td></tr>
<tr><td><tt>WINDOW</tt>        </td><td width=20><td>打印 the 当前可视窗口 selection of the 绘图</td></tr>
<tr><td><tt>PORTRAIT</tt>      </td><td width=20><td>纵向打印</td></tr>
<tr><td><tt>LANDSCAPE</tt>     </td><td width=20><td>横向打印</td></tr>
</table>
<p>
如果 any of the <tt>options</tt> <tt>MIRROR</tt>...<tt>CAPTION</tt> is preceeded with a <tt>'-'</tt>, that 选项 is turned off in case it is 当前 on (from a previous PRINT). A <tt>'-'</tt> by 自身 关闭所有 <tt>options</tt>.
<h2>打印 to a 文件</h2>
The <tt>文件</tt> 选项 可以用于 print the 输出 into a 文件。如果 该选项 is present, it must be immediately followed by the 名称 of the 输出文件。
<p>
如果输出文件的扩展名为 <tt>".pdf"</tt>（大小写不敏感），将建立一个 PDF 文件。PDF 文件也可以通过选择“打印到文件（PDF）”建立 from the "Printer" 下拉列表框 in the <a href=#113>print dialog</a>。PDF 文件中的文字 can be searched in a PDF viewer, as long as they are 不适用 vector 字体。
<p>
如果输出文件名的扩展名为 <tt>".ps"</tt>（大小写不敏感），将建立 PostScript 文件。
<p>
如果 文件名 is only an <tt>"*"</tt> 或 <tt>"*.ext"</tt> (an 星号 followed by an extension，比如 <tt>"*.pdf"</tt>），将打开允许用户选择或输入实际的文件名称的文件对话框。
<p>
如果文件名 is only an extension,比如 <tt>".pdf"</tt>, the 输出文件 名称 将 be the same as the 绘图 file 名称, with the extension changed to the 给定的 string.
<p>
文件名可以包含一个或多个下面的占位符, which 将 被替换 with the 各自的 string:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>%E</tt>     </td><td width=20><td>载入的文件的扩展名（不含 <tt>'.'</tt>）</td></tr>
<tr><td><tt>%N</tt>     </td><td width=20><td>载入的文件的名称（不含路径及扩展名）</td></tr>
<tr><td><tt>%P</tt>     </td><td width=20><td>载入的文件的路径（不含文件名）</td></tr>
<tr><td><tt>%%</tt>     </td><td width=20><td>the 字符 <tt>'%'</tt></td></tr>
</table>
<p>
例如，文件名
<p>
<tt>%N.cmp.pdf</tt>
<p>
将建立 <tt><i>boardname</i>.cmp.pdf</tt>.
<p>
如果 both the <tt>文件</tt> 和 <tt>PRINTER</tt> 选项 are present, only the last one 给定的 将 be 被考虑在内
<h2>打印到给定的纸张尺寸</h2>
<tt>PAPER</tt> 选项定义了要打印的纸张的尺寸。It must be immediately followed by one of the 纸张尺寸 names listed in the <i>Paper</i> 下拉列表框 of the PRINT dialog, like <tt>A4</tt>, <tt>Letter</tt> etc. 如果 a custom paper size shall be set, it has to be 给定的 in the format
<pre>
Width x Height Unit
</pre>
（不含空格），比如
<pre>
PRINT PAPER 200x300mm
PRINT PAPER 8.0x11.5inch
</pre>
<i>Width</i> 和 <i>Height</i> 可以为浮点数，<i>Unit</i> 可以或者是 <tt>mm</tt>，或者是 <tt>inch</tt> (the latter may be abbreviated as <tt>in</tt>）。Paper names must be 给定的 in full, and are 大小写不敏感。如果 both the <tt>PRINTER</tt> and <tt>PAPER</tt> 选项 are used, the <tt>PRINTER</tt> 选项 must be 给定的 第一个. 定制的纸张尺寸 may not work with 所有打印机。They are mainly for use with PostScript 或 PDF 输出.
<h2>打印 a 范围 of 图纸</h2>
<tt>图纸</tt>选项可以用于 print a 范围 of 图纸 from a 原理图。范围以两个数给定，delimited by a <tt>'-'</tt>,比如 <tt>2-15</tt>。Without 该选项, 仅打印当前编辑的图纸。为打印所有图纸，可以使用范围 <tt>ALL</tt>（大小写不敏感，但必须写全）。范围也可以只包含一个单独的数，比如 <tt>42</tt>, which 将 print exactly that 图纸。如果没有载入原理图，则该选项无意义。
<h2>例子</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PRINT</tt>     </td><td width=20><td>打开<a href=#113>print dialog</a> in which 您可以设置打印选项</td></tr>
<tr><td><tt>PRINT;</tt>    </td><td width=20><td>立即打印 the 绘图 with the 缺省的 选项s</td></tr>
<tr><td><tt>PRINT - MIRROR BLACK SOLID;</tt>  </td><td width=20><td>打印 the 绘图 mirrored, with everything in black and solid</td></tr>
<tr><td><tt>PRINT 2.5 -1;</tt>              </td><td width=20><td>打印 the 绘图 enlarged by a factor of 2.5, but makes sure that it does not exceed <b>one</b> page</td></tr>
<tr><td><tt>PRINT FILE .pdf;</tt>           </td><td width=20><td>打印 the 绘图 into a PDF file with the 相同名称 as the 绘图文件</td></tr>
<tr><td><tt>PRINT 图纸 2-15 FILE .pdf;</tt> </td><td width=20><td>打印 the 图纸 2 through 15 into a PDF file with the 相同名称 as the 绘图 文件</td></tr>
</table>


<a name=82>
<h1>QUIT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
退出程序
<dt>
<b>语法</b>
<dd>
<tt>QUIT</tt>
</dl>
该命令结束编辑会话。editing session. 如果 any 改变 have been made but the 绘图尚未保存，将弹出菜单询问您是否要先保存绘图/元件库。
<p>
您也可以 exit from EAGLE at any time by pressing <tt>Alt+X</tt>.


<a name=83>
<h1>RATSNEST</h1>
<dl>
<dt>
<b>功能</b>
<dd>
计算最短的 possible 鼠线和多边形。
<dt>
<b>语法</b>
<dd>
<tt>RATSNEST</tt><br>
<tt>RATSNEST signal_name ..</tt><br>
<tt>RATSNEST ! signal_name ..</tt>
</dl>
<b>另请参阅</b> <a href=#96>SIGNAL</a>，<a href=#69>MOVE</a>，<a href=#79>POLYGON</a>，<a href=#89>RIPUP</a>
<p>
The RATSNEST 命令 assesses the 鼠线 连接 以便 achieve the shortest possible 路径, 比如在元件移动之后。After reading a netlist via the <a href=#93>SCso useful to use the RATSNEST 命令 to 优化鼠线的长度。
<p>
The RATSNEST 命令 also calculates 所有 多边形s belonging to a 信号. 这是必要的 以便 avoid the calculation of 鼠线 for 焊盘 already 连接的 through 多边形s. 所有 of the 已计算的 多边as are then being displayed in the "real mode". 您可以 switch back to the faster "outline mode" with the RIPUP 命令。<br>
多边形的自动计算可以用
<pre>
<a href=#94>SET</a> POLYGON_RATSNEST OFF;
</pre>
关闭。请注意 RATSNEST 不 mark the board 绘图 as modified，因为已计算的多边形数据 (if any) 不存储在电路板图中, and the 重新计算的鼠线 don't really constitute a modification of the 绘图.
<h2>零长度的鼠线</h2>
如果两个或多个 wires of the 同一信号 on 不同的布线层 end at the same 点 without being 连接的 through a 焊盘或过孔，则产生 <i>零长度的鼠线</i>，which 将被显示为一个 X-shaped cross in the Unrouted layer. The same applies to smds that belong to the same 信号 and are placed on opposite sides of the board.
<p>
Such <i>零长度的鼠线</i> can be picked up with the <a href=#91>ROUTE</a> 命令 just like ordinary 鼠线。They may also be 处理d by 放置 a <a href=#107>VIA</a> at that 点.
<h2>Making sure everything has been routed</h2>
如果没有thing left to be routed, the RATSNEST 命令 将 respond with the message
<pre>
Ratsnest: Nothing to do! 没有需要处理的
</pre>
否则，如果仍有 鼠线 that have not been routed, 将会显示消息：
<pre>
Ratsnest: xx 个鼠线。
</pre>
其中 <tt>xx</tt> gives the number of unrouted 鼠线.
<h2>通配符</h2>
如果给定了 <tt>signal_name</tt> 参数，字符 <tt>'*'</tt>, <tt>'?'</tt> 和 <tt>'[]'</tt> 为 <i>通配符</i>，并具有以下含义：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>*</tt>    </td><td width=20><td>匹配任意数量的任何字符</td></tr>
<tr><td><tt>?</tt>    </td><td width=20><td>精确匹配 精确 one 字符</td></tr>
<tr><td><tt>[...]</tt></td><td width=20><td>匹配 any of the 字符 between the 方括号</td></tr>
</table>
<p>
如果 any of 这些字符 shall be matched 精确 as such, it has to be enclosed in 方括号. 例如, <tt>abc[*]ghi</tt> 将匹配 <tt>abc*ghi</tt> 而非 <tt>abcdefghi</tt>。
<p>
字符范围给定为 <tt>[a-z]</tt>，which results in 范围 <tt>'a'</tt>...<tt>'z'</tt> 内的任何字符。
<h2>隐藏所选的鼠线</h2>
Sometimes it may be useful to 隐藏所选信号的鼠线, 比如 if 这些 将 later be 连接的 through a 多边形。Typically this could be 供电信号, which have 大量鼠线 that 将 never be routed 明确地 and just obscure the 其它信号的鼠线。
<p>
To hide 鼠线 the RATSNEST 命令 can be 给定的 the exclamation mark (<tt>'!'</tt>)，followed by a list of 信号,比如
<pre>
RATSNEST ! GND VCC
</pre>
which 将 hide 信号 <tt>GND</tt> 和 <tt>VCC</tt>的鼠线。<br>
To have the 鼠线再次显示 just 输入 RATSNEST 命令 without the <tt>'!'</tt> 字符, 以及 the list of signals：
<pre>
RATSNEST GND VCC
</pre>
这将激活 <tt>GND</tt> 和 <tt>VCC</tt> 信号的鼠线的显示，and also 重新计算s them. 您也可以重新计算鼠线 (and 多边形s) of 特定的 信号 this way.
<p>
信号名称可以包含通配符，and the 两个 变体 may be combined,比如
<pre>
RATSNEST D* ! ?GND VCC
</pre>
which 将 重新计算并显示名称以 <tt>'D'</tt> 开始的所有信号的鼠线，and hide the 鼠线 of 所有 the various GND 信号 (like AGND, DGND etc.) and VCC 信号。请注意，命令是按从左到右处理的，so in case there is a DGND 信号 the 例子 会先处理 it for display, but then hide 它的鼠线。
<p>
为确保所有鼠线都被显示，输入
<pre>
RATSNEST *
</pre>
请注意，<a href=#96>SIGNAL</a> 命令 将自动地 make the 信号的鼠线可见 if a new 鼠线 is 建立d for that 信号. The <a href=#89>RIPUP</a> 命令 on the 其它hand 将 not change the state of hiding 鼠线 if a wire of a 信号 is changed into an 鼠线. 
<h2>差分对</h2>
鼠线 for 差分对 信号 prefer open wire ends.


<a name=84>
<h1>RECT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Adds rectangles to a 绘图.
<dt>
<b>语法</b>
<dd>
<tt>RECT [orientation] &#149; &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选择层。
</dl>
<b>另请参阅</b> <a href=#37>CIRCLE</a>
<p>
RECT 命令用于为绘图添加矩形。两个点定义矩形的两个 opposite corners。按 鼠标中键 改变 the layer to which the rectangle is to be added.
<p>
The <tt>orientation</tt>（参见 <a href=#29>ADD</a> 中的描述）may be any angle in the 范围 <tt>R0</tt>...<tt>R359.9</tt>. The <tt>S</tt> and <tt>M</tt> 标志s can't be used here. 请注意，坐标 are 始终定义ed at an 方向 of <tt>R0</tt>. The possibility of 输入 an <tt>orientation</tt> in the RECT 命令 is mainly for use in 脚本s, where the rectangle data may have been derived through a 用户语言程序 from the <a href=#204>UL_RECTANGLE</a> 对象. 当 输入 a non-zero 方向 interactively, the corners of the rectangle may not appear at the 实际的 光标位置。Use the <a href=#90>ROTATE</a> 命令 to interactively rotate a rectangle.
<h2>Not Part of Signals</h2>
Rectangles in the 信号层s Top, Bottom, 或 Route2...15 don't belong to 信号. Therefore the DRC reports errors if they overlap with wires, 焊盘 etc.
<h2>限制区域</h2>
如果 used in the layers tRestrict, bRestrict, 或 vRestrict, the RECT 命令 定义了 限制区域 for the 自动布线器.


<a name=85>
<h1>REDO</h1>
<dl>
<dt>
<b>功能</b>
<dd>
执行一个命令 that was reversed by UNDO.
<dt>
<b>语法</b>
<dd>
<tt>REDO;</tt>
<dt>
<b>键盘</b>
<dd>
<tt>F10:          REDO</tt>   执行 REDO 命令。<br>
<tt>Shift+Alt+BS: REDO</tt>
</dl>
<b>另请参阅</b> <a href=#102>UNDO</a>，<a href=#362>正向&amp;反向编序</a>
<p>
In EAGLE it is possible to reverse 先前的动作 with the UNDO 命令。这些动作可以通过 REDO 命令再次执行。UNDO 和 REDO 操作 with 一个命令 memory which exists back to the last EDIT, OPEN 或 REMOVE 命令。
<p>
UNDO/REDO is completely integrated within 正向&amp;反向编序.


<a name=86>
<h1>REMOVE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
删除文件，元件，符号，封装以及图纸。
<dt>
<b>语法</b>
<dd>
<tt>REMOVE name</tt><br>
<tt>REMOVE name.Sxx</tt>
</dl>
<b>另请参阅</b> <a href=#72>OPEN</a>，<a href=#87>重命名</a>
<h2>文件</h2>
REMOVE 命令用于删除 the file <tt>name</tt> if in PCB 图或原理图编辑模式。
<h2>元件，符号，封装</h2>
REMOVE 命令用于删除元件，符号或封装 "name" from the presently 打开的元件库。名称 may include an extension (例如 REMOVE name.pac). 如果给定的名称不含扩展名，you have to be in the 各自的 mode to remove an 对象 (i.e. editing a 封装 if 您想要 remove 封装).
<p>
符号和封装 can be erased from a 元件库 仅当 not used by a device.
<p>
REMOVE in a 元件库 clears the UNDO buffer.
<h2>图纸</h2>
REMOVE 命令也可用于从原理图删除图纸。The 名称 of the presently 载入的 原理图 can be 忽略ted. The 参数 xx 代表 the 图纸 number, for 例如：
<pre>
REMOVE .S3
</pre>
删除 图纸 number 3 from the presently 载入的 原理图.
<p>
如果您删除当前载入的图纸，图纸 number 1 将被载入 在命令已执行之后。所有 图纸 with a higher number than the one deleted 将 get a number 减小d by one.


<a name=87>
<h1>RENAME</h1>
<dl>
<dt>
<b>功能</b>
<dd>
重新命名符号，元件或封装。
<dt>
<b>语法</b>
<dd>
<tt>RENAME old_name new_name;</tt>
</dl>
<b>另请参阅</b> <a href=#72>OPEN</a>
<p>
RENAME 命令用于改变符号、元件或封装的名称。在此之前，必须用 OPEN 命令打开适当的元件库。
<p>
名称可以包含扩展名（例如：RENAME name1.pac name2[.pac] - 请注意，第二个参数中的扩展名是可选的）。如果给定的第一个参数不含扩展名，您必须 to be in the 各自的 mode to 重命名 an 对象 (i.e. editing a 封装 如果您想要对封装重命名）。
<p>
重命名清除 UNDO 缓冲区。


<a name=88>
<h1>REPLACE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
替换零件。
<dt>
<b>语法</b>
<dd>
<tt>REPLACE &#149;..</tt><br>
<tt>REPLACE device_name[@library_name] &#149;..</tt><br>
<tt>REPLACE part_name device_name[@library_name] ..</tt><br>
<tt>REPLACE package_name &#149;..</tt><br>
<tt>REPLACE ELEMENT_name package_name ..</tt>
</dl>
<b>另请参阅</b> <a href=#94>SET</a>，<a href=#103>UPDATE</a>
<p>
REPLACE 命令可以用于替换零件 with a 不同的元件（甚至从不同的元件库）。新旧元件必须兼容，这意味着它们所用的单元与连接的引脚/焊盘必须匹配，either by their names 或 their 坐标.
<p>
不带参数的 REPLACE 命令打开一对话框 from which a device can be 所选的 from 所有元件库 that are 当前 in <a href=#104>use</a>。After 这样一个元件已经选择，subsequent mouse clicks on parts 将替换那些零件的元件 with the 所选的 one if possible.
<p>
如果给定了 <tt>device_name</tt>，则该元件将用于替换操作。
<p>
With both a <tt>part_name</tt> 和 <tt>device_name</tt>，the device of the 给定的 part 将 被替换 (this is useful 当 working with 脚本s).
<p>
如果给定了 <tt>library_name</tt>，并且它包含空白，整个 <tt>device_name@library_name</tt> 需要用单引号括起来。
<p>
如果 only a board is being edited (without a 原理图）， 或者如果 PCB 图中的元素 are being replaced that have no matching part in the 原理图，the REPLACE 命令 has 两个 不同的 modes that are chosen by the SET 命令。
<p>
第一个模式（缺省的）由命令
<pre>
SET REPLACE_SAME NAMES;
</pre>
激活。在这个模式中，新的封装必须有 same 焊盘 and smd names as the old one. It may be taken from a 不同的 元件库 and it may 包含 additional 焊盘 and smds. The 位置 of 焊盘 and smds is ir相关的.
<p>
第二个模式由命令
<pre>
SET REPLACE_SAME COORDS;
</pre>
激活。在这个模式中，焊盘 and smds of the 新的封装 must be placed at the same 坐标 as in the old one (相对于 the 原点). Pad and smd names may be 不同的. The 新的封装 may be
taken from a 不同的 元件库 and may 包含 additional 焊盘 and smds.
<p>
旧封装的焊盘 连接的 with 信号 must be present in the 新的封装. 如果该条件 is true the 新的封装 may have less 焊盘 than the old one.
<p>
REPLACE 函数 only 当 the 适当的 t原点s/b原点s layer is displayed.
<p>
如果绘图中已经有了相同名称的封装（从同一个元件库），and the 元件库已被修改过 after the 原始的 对象 was added, 将启动一次自动的<a href=#103>元件库更新</a> and you 将 be asked whether 对象 in the 绘图 shall 被替换 with their new 版本s.
<p>
<b>Note: A REPLACE 操作 自动地更新所有 involved 元件库 对象 as necessary。这意味着 that 其它零件（on 其它原理图 图纸 或 in other locations on the board) may be changed, too. You should 始终 run a <a href=#47>设计规则检查</a> (DRC) and an <a href=#49>电气规则检查</a> (ERC) after a REPLACE 操作!</b>


<a name=89>
<h1>RIPUP</h1>
<dl>
<dt>
<b>功能</b>
<dd>
改变 routed wires and 过孔 into 鼠线.<br>
改变 the display of 多边形s to "outlines".
<dt>
<b>语法</b>
<dd>
<tt>RIPUP;</tt><br>
<tt>RIPUP [ @ ] [ ! ] &#149;..</tt><br>
<tt>RIPUP [ @ ] [ ! ] signal_name..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> rips up 组.
</dl>
<b>另请参阅</b> <a href=#43>DELETE</a>，<a href=#55>GROUP</a>，<a href=#79>POLYGON</a>，<a href=#83>RATSNEST</a>
<p>
The RIPUP 命令 改变 routed wires (tracks) into 鼠线. That can be done for:
<ul>
<li>所有信号 (RIPUP;)
<li>所有信号 except certain ones (e.g. RIPUP ! GND VCC;)
<li>一个或多个 信号 (e.g. RIPUP D0 D1 D2;)
<li>certain 段s (chosen with 一个或多个 mouse clicks)
<li>所有多边形s (RIPUP @;)
<li>所有多边形s of certain 信号 (e.g. RIPUP @ GND VCC;)
<li>所有多边形s except 那些 of certain 信号 (e.g. RIPUP @ ! GND VCC;)
</ul>
选择 an 鼠线 with RIPUP converts 所有 adjacent routed wires and 过孔 into 鼠线, up to the next 焊盘, smd 或 鼠线.
<pre>
RIPUP signal_name..
</pre>
rips up the 完整的 信号 "signal_name" (several 信号 may be listed, e.g. <tt>RIPUP D0 D1 D2;</tt>).
<pre>
RIPUP &#149;..
</pre>
rips up 段s 所选的 by the 鼠标点击 up to the next 焊盘/smd.
<pre>
RIPUP;
</pre>
removes only 信号 which are 连接ed 到 元素s (e.g. board crop marks are not affected). The same applies if RIPUP is used on a 组.
<p>
<b>Note:</b> in 所有 cases the RIPUP 命令 only acts on 对象 that are in layers that are 当前 可见的!
<h2>通配符</h2>
如果 a <tt>signal_name</tt> 参数 is 给定的, the 字符 <tt>'*'</tt>, <tt>'?'</tt> and <tt>'[]'</tt> are <i>通配符</i> and have the 以下 meaning:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>*</tt>    </td><td width=20><td>匹配 any number of any 字符</td></tr>
<tr><td><tt>?</tt>    </td><td width=20><td>匹配 精确 one 字符</td></tr>
<tr><td><tt>[...]</tt></td><td width=20><td>匹配 any of the 字符 between the 方括号</td></tr>
</table>
<p>
如果 any of 这些 字符 shall be matched 精确 as such, it has to be enclosed in 方括号. 例如, <tt>abc[*]ghi</tt> 将 match <tt>abc*ghi</tt> and not <tt>abcdefghi</tt>.
<p>
A 范围 of 字符 can be 给定的 as <tt>[a-z]</tt>, which results in any 字符 in the 范围 <tt>'a'</tt>...<tt>'z'</tt>.
<h2>Polygons</h2>
如果 RIPUP 命令 with a 名称 is applied to a 信号 which 包含 a 多边形 the 多边形 将 be displayed with 它的 outlines (faster screen redraw!). Use the <a href=#83>RATSNEST</a> 命令 to have 多边形s displayed in the "real mode" again.


<a name=90>
<h1>ROTATE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Rotates 对象.
<dt>
<b>语法</b>
<dd>
<tt>旋转 orientation &#149; ..</tt><br>
<tt>旋转 orientation 'name' ..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> 旋转组.<br>
<mb>Left&amp;Drag</mb> 以任意角度旋转对象。<br>
<mb>Ctrl+Right&amp;Drag</mb> 以任意角度旋转组。
</dl>
<b>另请参阅</b> <a href=#29>ADD</a>，<a href=#67>MIRROR</a>，<a href=#69>MOVE</a>，<a href=#63>LOCK</a>，<a href=#55>GROUP</a>
<p>
旋转 命令用于改变对象的方向。
<p>
如果给定了 <tt>orientation</tt>（参见 <a href=#29>ADD</a> 中的描述），that 值 将 be added to the 方向 of the 所选的对象 instead.
<p>
Prepending <tt>orientation</tt> with the 字符 <tt>'='</tt> causes 值 not to be added, but instead to be set 绝对ly.
<p>
零件, 焊盘, smds and 引脚也可以按它们的名称选择，which is 特别有用 if the 对象 is outside the 当前显示的窗口区域。
例如
<p>
<pre>
旋转 =MR90 IC1
</pre>
<p>
将 set the 方向 of 元素 IC1 to MR90, regardless of 它的 previous setting.
<p>
属性 of parts can be 所选的 by 输入 the 连接 of part 名称 and 属性 名称,比如 <tt>R5&gt;VALUE</tt>.
<p>
The quotes around <tt>name</tt> are necessary to distinguish it from an 方向 参数 as in
<p>
<pre>
旋转 R45 'R1'
</pre>
They can be left away if the 上下文 is clear.
<p>
您可以 use Click&amp;Drag to 旋转 an 对象 by any angle. Just click on the 对象 and move the mouse (with the 鼠标按键 按住) away from the 对象. After having moved the mouse a short 距离, the 对象 将 start rotating. Move the mouse until the 期望的 angle has been reached and then release the 鼠标按键  If, at some 点, you decide to rather not 旋转 the 对象, 您可以 按 the ESCape 键 while still holding the mouse 按钮 pressed. The same 操作 can be applied to a 组 by using the 鼠标右键. The 组 将 be rotated around the 点 where the 鼠标右键 has been pressed down.
<p>
零件 cannot be rotated if they are <a href=#63>locked</a>，or if any of their 连接的 焊盘 将 extend outside the allowed area (in case you are using a <a href=#368>limited edition</a> of EAGLE).
<h2>元素s</h2>
当 rotating an 元素, wires (tracks) 连接ed 到 the 元素 are moved at the 连接 points (beware of short 电路s!).
<p>
元素s 只能 be rotated if the 适当的 t原点s/b原点s layer is 可见的.
<h2>Text</h2>
Text is 始终 displayed 以便 it can be read from the bottom or from the right - even 当 rotated. Therefore after 每个 两个 rotations it appears the same way, but the 原点 has moved from the lower left to the upper right corner. Remember this if a text appears to be unselectable!
<p>
如果 您想要 have text that is printed "upside down", 您可以 set the "Spin" 标志 for that text.


<a name=91>
<h1>ROUTE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Converts unrouted 连接 into routed wires (tracks).
<dt>
<b>语法</b>
<dd>
<tt>ROUTE [width] &#149; [curve | @radius] &#149;..</tt><br>
<tt>ROUTE name ..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Left</mb> starts routing at any 给定的 点 along a wire 或 via.<br>
<mb>Shift+Left</mb> starts routing with the same width as an 现有的 wire.<br>
<mb>Center</mb> 选择s the layer.<br>
<mb>Right</mb> 改变 the wire 弯折样式（参见 <a href=#94>SET Wire_Bend</a>).<br>
<mb>Shift+Right</mb> reverses the direction of switching 弯折样式s.<br>
<mb>Ctrl+Right</mb> toggles between 相应的 弯折样式s.<br>
<mb>Shift+Left</mb> places a via at the 端点.<br>
<mb>Ctrl+Left</mb> 当 放置 a wire 端点 定义了 arc 半径.
</dl>
<b>另请参阅</b> <a href=#33>AUTO</a>，<a href=#102>UNDO</a>，<a href=#109>WIRE</a>，<a href=#68>MITER</a>，<a href=#96>SIGNAL</a>，<a href=#94>SET</a>，<a href=#83>RATSNEST</a>
<p>
The ROUTE 命令 激活 the manual router which allows you to convert 鼠线 (unrouted 连接) into real wires.
<p>
The 第一个 point 选择s an unrouted 连接 (a wire in the Unrouted layer) and replaces one end of it by a wire (track). The end which is closer to the 鼠标光标 将 be taken. Now the wire can be moved around（参见 also <a href=#109>WIRE</a>). The 鼠标右键 将 改变the wire bend and the 鼠标中键 将 改变the layer. Please 请注意 only 那些 信号层s (1 through 16) are available that have been entered into the layer setup in the <a href=#136>设计规则</a>.
<p>
当 the final 位置 of the wire is reached, a further click of the 鼠标左键 将 place the wire and a new wire 段 将 be 附在 the 光标. 如果 <tt>Shift</tt> 键 is 按住 in such a situation, a Via 将 be 生成d at that point if this is possible and the 鼠线 hasn't already been completely routed. The 生成d Via 将 have either the 适当的 长度 or, if such a 长度 can't be determined, 将 go from layer 1 through 16.
<p>
当 the layer has been changed and a via-hole is thus necessary，it 将 be added 自动地 as the wire is placed. 当 the 完整的 连接 has been routed a 'beep' 将 be 给定的 and the next unrouted 连接 can be 所选的 for routing.
<p>
Only the 最小的 necessary 过孔 将 be set (依照 the layer setup in the <a href=#136>设计规则</a>). It may happen that an already 现有的 via of the same 信号 is extended accordingly, 或 that 现有的 过孔 are combined to form a longer via if that's necessary to allow the 期望的 layer change. 如果 a via is placed at the start 或 端点, and there is an SMD 焊盘 at that 位置, the via 将 be a <i>micro via</i> if the 当前的routing layer is one layer away from the SMD's layer (this applies 仅当 micro 过孔 have been enabled in the <a href=#136>设计规则</a>).
<p>
While the ROUTE 命令 is active the wire width can be entered from the 键盘.
<p>
如果 <i>curve</i> 或 <i>@radius</i> 参数 is 给定的, an arc can be drawn as part of the track（参见 the detailed 描述 in the <a href=#109>WIRE</a> command).
<p>
如果 <tt>Ctrl</tt> 键 is pressed while 选择 the starting point and there is no 鼠线 at that point, a new 鼠线 将 be 建立d 自动地. The starting point of that 鼠线 将 be that point on the 所选的 wire 或 via that is closest to the 鼠标光标 (possibly snapped to the nearest grid point). The far end of the 鼠线 将 动态ally point to a target 段 that is 不同的 from the 所选的 one. 如果 所选的 信号 is already completely routed, the far end 将 point to the starting point instead. 如果 所选的 wire is an arc, the 鼠线 将 start at the closest 端点 of the wire.
<p>
如果给定了 <tt>name</tt>，the 鼠线 of that 信号 that is closest to the 鼠标光标 is 所选的. 如果 <tt>name</tt> could be interpreted as a <i>with</i>, <i>curve</i> 或 <i>@radius</i> it has to be written in 单引号s.
<h2>选择 the routing layer and wire width</h2>
当 you 选择 an 鼠线, the initial layer in which to route is determined by considering the 对象 at the starting point as follows:
<ul>
<li>if there is an 对象 in the 当前的layer, the 当前的layer is kept <li>else one of the layers of the 对象 at that point 将 be taken
</ul>
当 选择 an 鼠线, the wire width for routing 将 be that defined by the 设计规则 and the 网络分类 of the 所选的信号 if the 标志 "Options/Set/Misc/Auto set route width and drill" is set. 您可以 选择 a 不同的 width wile the 鼠线 is 附在 the 光标, and the track 将 be rerouted with the new width. The same applies to the via data.
<p>
当 routing an 鼠线 that starts at an already routed wire, the new wire's width is 自动地 adj 现有的 wire if the <tt>Shift</tt> 键 is pressed 当 选择 the 鼠线.
<h2>Snap Function</h2>
The 端点 of the 动态ally 已计算的 鼠线终 used as an additional snap point, 即使 it is off grid. 如果 remaining 鼠线 has a 长度 that is shorter than SNAP_LENGTH, the routed wire 自动地 snaps to the 鼠线's 端点, and stays there until the mouse pointer is moved 至少 SNAP_LENGTH away from that point. The 最小的 距离 for this snap function can be defined with 命令
<pre>
SET SNAP_LENGTH distance;
</pre>
where "distance" is the snap 半径 in the 当前的栅格单位.
<h2>Follow-me Router</h2>
With the special <a href=#94>导线弯折样式</a> <tt>8</tt> and <tt>9</tt>，the ROUTE 命令 works as a "Follow-me" router. This means that the 所选的 鼠线 将 be routed fully 自动地 by the <a href=#134>自动布线器</a>.
<p>
Wire 弯折样式 <tt>8</tt> routes only the shorter side of the 所选的 airwire，while <tt>9</tt> routes both sides. 一旦 the automatic routing process is 完整的 (which may take a while, so be patient）， the 鼠线 将 被替换 by the 实际的 routed wires and 过孔. 如果 routing couldn't be completed (比如 due to 设计规则 restrictions), the 光标 改变 into a "forbidden" sign. With 弯折样式 <tt>9</tt> it is possible that only one side of the 鼠线 can be routed, while the 其它side can't.
<p>
当ever the mouse is moved, any previous result is discarded and a new calculation is started. 一旦 the result is acceptable, just click the 鼠标左键 to place it.
<p>
The Follow-me router works by marking the grid point at the 当前的mouse 位置 as a starting point, and uses the 自动布线器 to find a path from that point to any point along the 信号 段 at which the 所选的 鼠线 ends (which is not necessarily the exact 端点 of the 鼠线). The starting point also considers the 当前 所选的 layer, so don't be surprised if the router places a via at that point. By changing the 当前的layer 您可以 influence the routing result.
<p>
The routing grid is taken from the 实际的 grid setting at the time the 鼠线 is 所选的.
<p>
The routing 参数 (like cost factors, preferred directions etc.) are 那些 defined in thref=#33>AUTO</a> 命令。
<p>
The 以下 特定的ities apply:
<ul>
<li>The Follow-me router 不 calculate the 多边形s. 如果您 want them to be 已计算的, 请a href=#83>RATSNEST</a> 命令。
<li>由于 the 起点 has to be part of the routed track, the result may be a T-shaped 连接, with an unnecessary wire reaching to the starting point。简单地移动鼠标光标 towards the 实际的连接 to avoid this.
<li>Both ends of the 鼠线 are routed separately in 弯折样式 <tt>9</tt>, which may 导致 wires and/or 过孔 overlapping 互相。移动鼠标光标 until such unwanted effects go away.
<li>依赖于 the 所选的 routing layer for the start point it may happen that unnecessary 过孔 are 建立d. Select a 不同的 routing layer to avoid this.
<li>如果 最大的 number of allowed 过孔 is set to <tt>0</tt> in the Follow-me router 参数, and you 改变the layer while an 鼠线 is 附在 the 鼠标光标, the router may place a via at the starting point of the short end of the 所选的鼠线 (if this is at 所有 possible 依照 the 设计规则, 限制区域 etc.).
<li>当处于 Follow-me mode, the 鼠标右键 toggles between routing only the shorter end of the 所选的 鼠线, 或 both ends. To 恢复 to manual routing you need to click on one of the 弯折样式 按钮, 或输入 <a href=#94>SET Wire_Bend</a> 命令 with a 值 smaller than <tt>8</tt>.
<li>The Follow-me router 只能 place round 或 octagonal shaped Vias, not square ones.
<li>The Miter 参数 has no meaning in Follow-me mode.
<li>The 参数 for the Follow-me router are stored together with the rest of the 自动布线器 参数, but in a separate section. This is because basically the Follow-me 参数 should behave like 那些 of the "Route" section in the 自动布线器 参数 (以便 not obscure too much area），but also might have a tendency towards 那些 of the optimize sections.
<li>如果某 PCB 图文件包含 自动布线器参数 is saved with 这个版本 of EAGLE and 载入进了旧的版本，自动布线器参数 may be reported as invalid by the 旧的版本, and it 将 use 默认值。您可以保存 自动布线器参数 into a *.ctl 文件 and 明确地 载入 them into the 旧的版本 if necessary.
<li>特殊的鼠标按键功能
    <mb>Ctrl+Left</mb> (start routing at any 给定的点 along a wire 或 via)，
	<mb>Shift+Left</mb> (place a via at the 端点) and
    <mb>Ctrl+Left</mb> (定义 arc 半径) don't work in Follow-me mode.
</ul>
<h2>差分对 routing</h2>
<i>差分对</i> are 信号 that need to be routed in parallel and with a specific 距离 between them.
<p>
The 以下 特定的ities apply:
<ul>
<li>A 差分对 包含 两个 信号 that have the 相同名称, only one ending with <tt>_P</tt> (the "positive" 信号) and the 其它one with <tt>_N</tt> (the "negative" 信号），比如 <tt>CLOCK_P</tt> and <tt>CLOCK_N</tt>.     The 两个 信号 must also belong to the same 网络分类.
<li>当 选择 an 鼠线 of a 差分对, both 信号 are routed in parallel. The 距离 between the 两个 信号 as well as the wire and via sizes are determined by the 信号' 网络分类.  This is done independent of the setting of "Options/Set/Misc/Auto set route width and drill".
<li>如果您 don't want to route both 信号, 您可以 按 the ESCape 键 to drop the second 鼠线.
<li>At the beginning of routing a 差分对 (当 the starting points of the 鼠线 don't have the necessary 距离, yet) 信号 wires are 生成d from the starting points to the 当前的鼠标光标 位置，    依照 the 当前的wire 弯折样式。请注意 there may be cases where 这些 wires overlap, so please make sure you choose a proper point from where to start the 实际的 parallel routing.
<li>The 坐标 给定的 while routing a 差分对 form a "center line" along which the 实际的 信号 wires are placed left and right with the proper 距离.
<li>由于 the 焊盘 a 差分对 is 连接ed 到 typically don't have the same 距离 as used for the 信号 wires, you may have to route such 信号 from both ends. This means, you start at one part, route towards the other part, and then route the rest starting from the 其它part. 这是必要的 because only the 第一个 step in a routing sequence 产生 wires that start at 位置s that don't have a proper 距离.
<li>如果您 route towards the wire 端点 of a 差分对 in a 不同的 layer, and the wires are fully aligned, the proper 过孔 将 be 生成d 自动地.
<li>特殊的鼠标按键功能
    <mb>Shift+Left</mb> (place a via at the 端点) and
    <mb>Ctrl+Left</mb> (定义 arc 半径) don't work in 差分对 mode.
<li>当 you start routing at any point of a 信号 (with <mb>Ctrl+Left</mb>) 您只能对所选的信号进行布线，and not the 差分对 this 信号 might be part of.
<li>差分对s 只能 be routed fully manually. The Follow-me router and the 自动布线器 treat them like regular 信号.
</ul>
您可以用 <a href=#65>MEANDER</a> 命令 to balance the 长度s of the 两个 信号 that form a 差分对.


<a name=92>
<h1>RUN</h1>
<dl>
<dt>
<b>功能</b>
<dd>
执行<a href=#141>用户语言</a>程序。
<dt>
<b>语法</b>
<dd>
<tt>RUN file_name [argument ...] </tt>
</dl>
<b>另请参阅</b> <a href=#93>SCRIPT</a>
<p>
The RUN 命令 starts the 用户语言程序 from the file <tt>file_name</tt>.<br>
The 可选的 <tt>argument</tt> list is available to the ULP through the <a href=#248>内建的变量</a> <tt>argc</tt> and <tt>argv</tt>.
<p>
Started from a 右键菜单 the according 对象 is assigned to a 组. It can be identified with the builtin function <a href=#304>ingroup() for further processing.</a>.
<h2>Running a ULP from a 脚本文件</h2>
如果 a ULP 被执行 from a 脚本文件 and the 程序返回一大于 <tt>0</tt> 的整数值（either because it has been terminated through a call to the <tt><a href=#268>exit()</a></tt> 函数 或 because the STOP 按钮 was clicked)，脚本文件的执行将被终止。
<h2>编辑器命令 resulting from running a ULP</h2>
A ULP can also use the <tt><a href=#268>exit()</a></tt> 函数 with a <tt>字符串</tt> 参数 to send a 命令字符串 back to the 编辑器窗口.


<a name=93>
<h1>SCRIPT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
执行一个命令文件。
<dt>
<b>语法</b>
<dd>
<tt>SCRIPT file_name;</tt>
</dl>
<b>另请参阅</b> <a href=#94>SET</a>，<a href=#66>MENU</a>，<a href=#31>ASSIGN</a>，<a href=#51>EXPORT</a>，<a href=#92>RUN</a>
<p>
SCRIPT 命令用于执行存储在脚本文件中的一系列命令。If SCRIPT is typed in at the 键盘 and "file_name" has no extension, the 程序 自动地使用 ".scr"。
<h2>例子</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>SCRIPT nofill</tt>     </td><td width=20><td>执行 nofill.scr</td></tr>
<tr><td><tt>SCRIPT myscr.</tt>     </td><td width=20><td>执行 myscr（无后缀） (no Suffix)</td></tr>
<tr><td><tt>SCRIPT myscr.old</tt>  </td><td width=20><td>执行 myscr.old</td></tr>
</table>
<p>
请 refer to the EXPORT 命令 for 不同的 possibilities of 脚本文件.
<p>
如果 SCRIPT 命令 is 所选的 with the mouse, a 弹出菜单 将 show 所有 of the 文件 which have the extension ".scr" 以便 they can be 所选的 and executed.
<p>
SCRIPT 命令提供了能力 to 定制程序 依照 您自己的意愿。比如：
<ul>
<li>CHANGE 命令菜单
<li>分配按键
<li>载入 pc board 形状
<li>改变颜色
</ul>
SCRIPT 文件包含 EAGLE 命令 依照 the 语法规则。Lines beginning with <tt>'#'</tt> are comment.
<h2>Continued Lines</h2>
SCRIPT 文件包含一个或多个命令 in 每个 line 依照 the 语法规则。The 字符 '\' at the end of a 命令行 ensures that the 第一个 word of the next line is not interpreted as a 命令。该功能允许您 to avoid apostrophes in many cases.
<h2>设置缺省的参数</h2>
脚本文件 eagle.scr - 如果它存在于工程目录或 in the <a href=#14>脚本路径</a> - 被执行 每次 a new 绘图 is 载入的 into an 编辑器窗口 (or 当 the 绘图 type is changed in a 元件库).<p>
<h2>Script Labels</h2>
The 缺省的 脚本文件 eagle.scr makes use of labels of the form <p>
<tt>EDITOR:</tt><p>
其中，EDITOR 为 SCH, BRD, LBR, DEV, PAC 及 SYM 之一。This ensures that only the 适当的 section 被执行 in the editor. 例如，当一新的电路板图 is opened, only the section starting with <tt>BRD:</tt> 被执行 (until the next 标签 if any). This also offers the possibility for editor specific 菜单s using the <a href=#66>MENU</a> 命令。The 标签 must be at the line beginning.
<h2>Execute Script 文件 in the 元件库编辑器</h2>
All of the layers are recognized 仅当 the 元件库编辑器 has previously been 载入的.


<a name=94>
<h1>SET</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Alters system 参数
<dt>
<b>语法</b>
<dd>
<tt>SET</tt><br>
<tt>SET options;</tt>
</dl>
参数 which affect 程序行为, the screen display, 或 the 用户 interface can be specified with the SET 命令。 The precise 语法 is 描述如下。
<p>
A dialog in which 所有 the 参数 can be set appears if the SET 命令 is entered without 参数.
<h2>用户界面</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Snap function            </td><td width=20><td><tt>SET SNAP_LENGTH number;</tt></td></tr>
<tr><td>                         </td><td width=20><td>This sets the limiting 值 for the 捕获功能 in the <a href=#91>ROUTE</a> 命令（使用当前的单位）。</td></tr>
<tr><td>                         </td><td width=20><td>缺省值：20 mil</td></tr>
<tr><td>                         </td><td width=20><td>如果 tracks are being laid with the <a href=#91>ROUTE</a> 命令 to 焊盘 that are not on the grid, the 捕获功能 将 ensure that a route 将 be laid to the 焊盘 within the snap-长度.</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET CATCH_FACTOR value;</tt></td></tr>
<tr><td>                         </td><td width=20><td>定义 距离 from the 光标 up to which 对象 are 被考虑在内 当 用鼠标点击。值 is entered 相对于 the height (or width, whichever is smaller) of the presently 可见的 part of the 绘图. It applies to a zoom level that 显示 至少 a 范围 of 4 inch and inrceases logarithmically 当 zooming further in. A 值 of 0 turns this limitation off.
                                          Values &lt; 1 are interpreted as factor, values &ge; 1 as percents. <br>缺省值：0.05 (5%).</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET SELECT_FACTOR value;</tt></td></tr>
<tr><td>                         </td><td width=20><td>This setting controls the 距离 from the 光标 within which nearby 对象 将 be suggested for <a href=#20>selection</a>. 值 is entered 相对于 the height (or width, whichever is smaller) of the presently 可见的 part of the 绘图.
                                          Values &lt; 1 are interpreted as factor, values &ge; 1 as percents. <br>缺省值：0.02 (2%).</td></tr>
<tr><td>Menu contents            </td><td width=20><td><tt>SET USED_LAYERS name | number;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Specifies the layers which 将 be shown in the associated EAGLE 菜单s. See the 例子 file <tt>mylayers.scr</tt>.</td></tr>
<tr><td>                         </td><td width=20><td>The layers Pads, Vias, Unrouted, 尺寸, Drills and Holes 将 in any case remain in the 菜单, as 将 the 原理图 layers. Any used 信号层s also remain in the 菜单s. <tt>SET Used_Layers All</tt> 激活所有层。</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET WIDTH_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET DIAMETER_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET DRILL_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET SMD_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET SIZE_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET ISOLATE_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET SPACING_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td><tt>SET MITER_MENU value..;</tt></td></tr>
<tr><td>                         </td><td width=20><td>The content of the associated 弹出菜单 can be configured with the 上述命令 for the 参数 <i>width</i> etc.. A 最大的 of 16 values is possible for 每个菜单 (16 value-pairs in the SMD 菜单). Without any values (as in <tt>SET WIDTH_MENU;</tt>) the 程序默认值s 将 be restored.</td></tr>
<tr><td>                         </td><td width=20><td>例如：<br><tt>Grid Inch;</tt><br><tt>Set Width_Menu 0.1 0.2 0.3;</tt></td></tr>
<tr><td>右键菜单            </td><td width=20><td><tt>SET 上下文 objecttype TEXT 命令s;</tt></td></tr>
<tr><td>                         </td><td width=20><td>For 可以选择的对象类型 右键菜单 (鼠标右键) can be extended by 任意 entries. <i>objecttype</i> 对大小写不敏感。<i>text</i> 为菜单文字，<i>commands</i> 为命令序列，that 被执行 after 在菜单条目上点击。Empty spaces are possible if the 表达式 is set into apostrophs. apostrophs inside have to be doubled（参见 <a href=#101>TEXT</a>). 例如：</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET 上下文 元素 Export 'run myexport.ulp';</tt></td></tr>
<tr><td>                         </td><td width=20><td>To the 右键菜单 for 元素s the entry <i>Export</i> is added, which starts an according ULP.</td></tr>
<tr><td>                         </td><td width=20><td>An existing userdefined entry 也可以被覆写。</td></tr>
<tr><td>                         </td><td width=20><td>设置存储在 eaglerc 文件中。 The number of entries is unlimited.</td></tr>
<tr><td>                         </td><td width=20><td>Deletion of entries: </td></tr>
<tr><td>                         </td><td width=20><td><tt>SET 上下文 objecttype;</tt> 删除 所有条目 for this 对象类型。With <tt>SET 上下文;</tt> 所有用户定义的菜单项被删除。</td></tr>
<tr><td>                         </td><td width=20><td>All 可选的 对象类型 are supported. 这些 are 属性, circle, 尺寸, 元素, frame, 单元, hole, instance, junction, label, 焊盘, pin, rectangle, smd, text, via and wire.</td></tr>
<tr><td>Bend angle for wires     </td><td width=20><td><tt>SET WIRE_BEND bend_nr;</tt></td></tr>
<tr><td>                         </td><td width=20><td><i>bend_nr</i> 可以为以下之一：</td></tr>
<tr><td>                         </td><td width=20><td><tt>0</tt>: Starting point - horizontal - vertical - end</td></tr>
<tr><td>                         </td><td width=20><td><tt>1</tt>: Starting point - horizontal - 45&deg; - end</td></tr>
<tr><td>                         </td><td width=20><td><tt>2</tt>: 起点 - 终点（直接连接）Starting point - end (straight 连接)</td></tr>
<tr><td>                         </td><td width=20><td><tt>3</tt>: Starting point - 45&deg; - horizontal - end</td></tr>
<tr><td>                         </td><td width=20><td><tt>4</tt>: Starting point - vertical - horizontal - end</td></tr>
<tr><td>                         </td><td width=20><td><tt>5</tt>: Starting point - arc - horizontal - end</td></tr>
<tr><td>                         </td><td width=20><td><tt>6</tt>: Starting point - horizontal - arc - end</td></tr>
<tr><td>                         </td><td width=20><td><tt>7</tt>: "Freehand" (arc that fits to wire at start, straight otherwise)</td></tr>
<tr><td>                         </td><td width=20><td><tt>8</tt>: Route short end of 鼠线 in <a href=#91>Follow-me router</a></td></tr>
<tr><td>                         </td><td width=20><td><tt>9</tt>: Route both ends of 鼠线 in <a href=#91>Follow-me router</a></td></tr>
<tr><td>                         </td><td width=20><td>请注意 <tt>0</tt>, <tt>1</tt>, <tt>3</tt> and <tt>4</tt> may 包含 additional miter wires（参见 <a href=#68>MITER</a>).</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET WIRE_BEND @ bend_nr ...;</tt></td></tr>
<tr><td>                         </td><td width=20><td>定义 弯折角度 that shall be actually used 当 switching with the 鼠标右键.</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET WIRE_BEND @;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Switches back to using 所有弯折角度.</td></tr>
<tr><td>Beep on/off              </td><td width=20><td><tt>SET BEEP OFF | ON;</tt></td></tr>
</table>
<h2>Screen display</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>栅格线的颜色              </td><td width=20><td><tt>SET COLOR_GRID color;</tt></td></tr>
<tr><td>层的颜色                  </td><td width=20><td><tt>SET COLOR_LAYER layer color;</tt></td></tr>
<tr><td>填充 模式 for layer   </td><td width=20><td><tt>SET FILL_LAYER layer fill;</tt></td></tr>
<tr><td>栅格参数                 </td><td width=20><td><tt>SET MIN_GRID_SIZE pixels;</tt></td></tr>
<tr><td>                         </td><td width=20><td>The grid is only displayed if the 栅格尺寸 is 大于 the set number of pixels.</td></tr>
<tr><td>Min. text size shown     </td><td width=20><td><tt>SET MIN_TEXT_SIZE size;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Text 小于 <tt>size</tt> 像素高度显示为矩形 on the screen. The setting <tt>0</tt> 意味着所有文字 将 被显示ed readably。</td></tr>
<tr><td>Net wire display         </td><td width=20><td><tt>SET NET_WIRE_WIDTH width;</tt></td></tr>
<tr><td>Pad display              </td><td width=20><td><tt>SET DISPLAY_MODE REAL | NODRILL;</tt></td></tr>
<tr><td>                         </td><td width=20><td>REAL: Pads are displayed as they 将 be plotted.<br>NODRILL: Pads are shown without drill hole.</td></tr>
<tr><td>                         </td><td width=20><td><tt>SET PAD_NAMES OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Pad names are displayed/not displayed.</td></tr>
<tr><td>Bus line display         </td><td width=20><td><tt>SET BUS_WIRE_WIDTH width;</tt></td></tr>
<tr><td><a href=#47>DRC</a>-参数 </td><td width=20><td><tt>SET DRC_FILL fill_name;</tt></td></tr>
<tr><td>多边形计算               </td><td width=20><td><tt>SET POLYGON_RATSNEST OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td>See <a href=#79>POLYGON</a> 命令。</td></tr>
<tr><td>矢量字体              </td><td width=20><td><tt>SET VECTOR_FONT OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td>See <a href=#101>TEXT</a> 命令。</td></tr>
<tr><td>对比参考 labels   </td><td width=20><td><tt>SET XREF_LABEL_FORMAT string;</tt></td></tr>
<tr><td>                         </td><td width=20><td>See <a href=#61>LABEL</a> 命令。</td></tr>
<tr><td>Part 对比参考    </td><td width=20><td><tt>SET XREF_PART_FORMAT string;</tt></td></tr>
<tr><td>                         </td><td width=20><td>See <a href=#101>TEXT</a> 命令。</td></tr>
</table>
<h2>Mode 参数</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>封装检查            </td><td width=20><td><tt>SET CHECK_CONNECTS OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td><a href=#29>ADD</a> 命令检查是否每个引脚都连接到了焊盘上（用 <a href=#40>CONNECT</a>）。This check can be switched off. Nevertheless, no board can be 生成d from a 原理图 if a device is found which does not have a 封装.</td></tr>
<tr><td><a href=#88>REPLACE</a> mode </td><td width=20><td><tt>SET REPLACE_SAME NAMES | COORDS;</tt></td></tr>
<tr><td><a href=#102>UNDO</a> buffer on/off </td><td width=20><td><tt>SET UNDO_LOG OFF | ON;</tt></td></tr>
<tr><td>Wire optimizing          </td><td width=20><td><tt>SET OPTIMIZING OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td>如果 set <i>on</i>, wires which lie in one line after a MOVE, ROUTE 或 SPLIT are subsumed into a single wire. See also <a href=#73>OPTIMIZE</a>.</td></tr>
<tr><td>Net wire termination     </td><td width=20><td><tt>SET AUTO_END_NET OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Automatic ending of 网络 或 busses. See <a href=#71>NET</a> 或 <a href=#35>BUS</a>.</td></tr>
<tr><td>Automatic junctions      </td><td width=20><td><tt>SET AUTO_JUNCTION OFF | ON;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Automatic setting of junctions. See <a href=#60>JUNCTION</a>.</td></tr>
<tr><td>Automatic confirmation   </td><td width=20><td><tt>SET CONFIRM OFF | NO | YES;</tt></td></tr>
<tr><td>                         </td><td width=20><td>Allows confirmation 对话框 to be 处理d 自动地（参见 below for details).</td></tr>
</table>
<h2>颜色</h2>
There are 三个 <i>palettes</i> for 黑、白以及彩色背景, 分别. 每个色盘 has 64 color entries, which can be set to any ARGB 值。The palette entry number 0 is used as the 背景颜色 (in the "white" palette this entry cannot be modified, 因为 this palette 将 also be used for printing, where the 背景 is 始终 white).
<p>
调色板可以或者通过the dialog under "Options/Set.../颜色" 或者通过使用命令
<pre>
SET PALETTE <i>index</i> <i>argb</i>
</pre>
修改。其中，<i>index</i> 为范围为 0..63 的数值，<i>argb</i> 为十六进制数值 defining the Alpha, Red, Green and Blue 元件 of the color, like 0xFFFFFF00 (which 会导致 a 亮黄色）。The alpha component 定义了 how "opaque" the color is。0x00 的值 意味着它是完全透明的（即不可见），while 0xFF means it is totally opaque. The alpha component of the 背景色始终为 0xFF。请注意 ARGB 值必须以 "0x" 开始，否则它会被当作十进制数。您可以用
<pre>
SET PALETTE BLACK|WHITE|COLORED
</pre>
分别切换到黑色、白色或彩色背景色板。请注意 there 将 be no 自动的窗口刷新 after this 命令，所以您应在此之后运行一次 WINDOW; 命令。
<p>
默认情况下，only the palette entries 0..15 are used and they 包含 the 颜色 listed below.
<p>
The palette entries are grouped into "normal" and “高亮” 颜色. There are 始终 8 "normal" 颜色, followed by the 相应的 8 “高亮”colors. So 颜色 0..7 are "normal" 颜色, 8..15 are their “高亮” values, 16..23 are another 8 "normal" 颜色 with 24..31 being their “高亮” values and so on. The “高亮” 颜色 are used to visualize 对象, 比如 in the SHOW 命令。
<p>
<tt>Color</tt>, listed 依照 color numbers, which can be used instead of the color names. Used to specify colors:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>0       </td><td width=20><td>Black</td></tr>
<tr><td>1       </td><td width=20><td>Blue</td></tr>
<tr><td>2       </td><td width=20><td>Green</td></tr>
<tr><td>3       </td><td width=20><td>Cyan</td></tr>
<tr><td>4       </td><td width=20><td>Red</td></tr>
<tr><td>5       </td><td width=20><td>Magenta</td></tr>
<tr><td>6       </td><td width=20><td>Brown</td></tr>
<tr><td>7       </td><td width=20><td>LGray</td></tr>
<tr><td>8       </td><td width=20><td>DGray</td></tr>
<tr><td>9       </td><td width=20><td>LBlue</td></tr>
<tr><td>10      </td><td width=20><td>LGreen</td></tr>
<tr><td>11      </td><td width=20><td>LCyan</td></tr>
<tr><td>12      </td><td width=20><td>LRed</td></tr>
<tr><td>13      </td><td width=20><td>LMagenta</td></tr>
<tr><td>14      </td><td width=20><td>Yellow</td></tr>
<tr><td>15      </td><td width=20><td>White</td></tr>
</table>
<p>
<tt>Fill</tt> specifies the style with which wires and rectangles in a 特定的 layer are to be filled。该参数也可以用每行开始处的数字替换：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>0       </td><td width=20><td>Empty</td></tr>
<tr><td>1       </td><td width=20><td>Solid</td></tr>
<tr><td>2       </td><td width=20><td>Line</td></tr>
<tr><td>3       </td><td width=20><td>LtSlash</td></tr>
<tr><td>4       </td><td width=20><td>Slash</td></tr>
<tr><td>5       </td><td width=20><td>BkSlash</td></tr>
<tr><td>6       </td><td width=20><td>LtBkSlash</td></tr>
<tr><td>7       </td><td width=20><td>Hatch</td></tr>
<tr><td>8       </td><td width=20><td>XHatch</td></tr>
<tr><td>9       </td><td width=20><td>Interleave</td></tr>
<tr><td>10      </td><td width=20><td>WideDot</td></tr>
<tr><td>11      </td><td width=20><td>CloseDot</td></tr>
<tr><td>12      </td><td width=20><td>Stipple1</td></tr>
<tr><td>13      </td><td width=20><td>Stipple2</td></tr>
<tr><td>14      </td><td width=20><td>Stipple3</td></tr>
<tr><td>15      </td><td width=20><td>Stipple4</td></tr>
</table>
<h2>自动确认</h2>
At times EAGLE 提示 the 用户 with 信息或警告消息，或 requires a decision on 如何 proceed. This may be unwanted in automated processes (like <a href=#93>脚本文件</a>).
命令
<pre>
SET CONFIRM YES
</pre>
将 自动地确认每个消息对话框 as if the 用户 had clicked on the "positive" 按钮（"OK" 或 "Yes")。对话框自身 isn't even presented to the 用户.
Similarly, 命令
<pre>
SET CONFIRM NO
</pre>
acts as if the 用户 had clicked on the "negative" 按钮 ("No"），if such a 按钮 is present. 否则它只确认对话 dialog。<br>
Finally, 命令
<pre>
SET CONFIRM OFF
</pre>
关闭自动确认。如果自动确认没有明确地关闭, it 将 自动地 fall back to <tt>OFF</tt> the 下一次 the 编辑器窗口 接受一些交互 输入 from the 用户.
<p>
您不应把 <tt>SET CONFIRM YES</tt> 放在脚本的开始 and then 执行大量的命令 "silently". It is better to 明确地 put this around 单独的 命令,比如
<pre>
SET CONFIRM YES
REMOVE <i>filename</i>
SET CONFIRM OFF
</pre>
<b>Be extremely careful 当 using 该命令！Blindly 确认消息对话框 可能导致重要消息 to be overlooked. The result may then not be what the 用户 expected.</b>
<h2>EagleRc 参数</h2>
Sometimes a small detail of functionality needs to be made adjustable, 比如 因为某些用户 绝对ly need to have it work 不同的ly. 这些参数 are not available in any 对话框，但只能 be changed through an entry in the eaglerc 文件。 In order to make this easier, any 参数 that is 没有找到 amoung the 关键字 listed above 将 be looked up in the eaglerc 参数 and can thus be changed 通过使用 SET 命令。请注意，参数名称必须 be written in full and exactly as listed below（大小写敏感）。参数值 is typically '0' 或 '1', to turn the 功能 'off' 或 'on', 分别. After changing any of 这些参数 that influence the way the screen display is drawn，可能需要一次窗口刷新。
<p>
<b>例</b>
<pre>
SET Option.DrawUnprocessedPolygonEdgesContinuous 1;
</pre>
可用的 eaglerc 参数如下：
<p>
<dl>
<dt><b>Cmd.Copy.ClassicEagleMode</b>
<dd>
在旧的 EAGLE 版本中，COPY 命令 was used solely to copy 对象 within a 绘图, as opposed to the Windows 行为, where COPY places a copy of the 所选的对象 (i.e. the GROUP) into the 系统的剪贴板。As of 版本 6, EAGLE的 COPY 命令 primarily behaves the same way as in 其它的 Windows 应用程序，by putting a copy of the 当前的group into the 剪贴板。原始的功能 of 复制所选的对象, 或在元件库之间复制元件库对象，is still fully available, which is 尤其是 important to keep 现有的 脚本s and ULPs working. What has also often irritated Windows 用户 is that in EAGLE the CUT 命令 has 只复制ed  当前的组到剪贴板, but did not actually 删除组 from the 绘图. 由于 a CUT 命令 that 删除组 将 not be of much use in a PCB 图/原理图 pair that is 连接ed via 正&amp;反向编序，CUT 命令 has been removed from the main 下拉菜单和命令按钮工具栏。It is still fully available from the 命令行 或 within 脚本s. Setting 该参数 to '1' restores the old 行为 of both the COPY and the CUT 命令。 请注意 this setting only takes effect the 下一次 you open an 编辑器窗口.
<dt><b>Cmd.Delete.WireJointsWithoutCtrl</b>
<dd>
如果您 insist on having the DELETE 命令 delete wire joints without 按 Ctrl 键, 您可以 设置该参数为 '1'.
<dt><b>Cmd.Name.RenameEntireNetByDefault</b>
<dd>
如果一个网络包含多个段，NAME 命令 by 缺省的 acts only upon the 所选的段。By 设置该参数 to '1' this can be changed to 重命名 the entire net by 缺省的。该参数也适用于总线。
<dt><b>Cmd.Name.RenameEntireSignalByDefault</b>
<dd>
如果信号包含多边形，and the NAME 命令 is applied to that 多边形，缺省情况下只重命名多边形。设置该参数为 '1' makes the NAME 命令 act upon the 整个信号 by 缺省的.
<dt><b>Cmd.Wire.IgnoreCtrlForRadiusMode</b>
<dd>
如果您不喜欢 the special mode in wire 绘图 命令 that allows for the 定义 of an arc 半径 by 按 Ctrl 键 当 放置 the wire, 您可以设置该参数为 '1'。这 将 turn this feature off for 所有命令 that draw wires.
<dt><b>ControlPanel.View.AutoOpenProjectFolder</b>
<dd>
The 自动打开 of the 工程文件夹 at 程序启动（或当 activating a 工程 by 点击ing on 它的 gray 按钮）can be disabled by setting 该参数 to '0'。
<dt><b>Erc.AllowUserOverride一致性Check</b>
<dd>
为了 处理 PCB 图/原理图 pairs that have only minor 不一致，用户能够 enable a dialog that 允许 him to 强制编辑器执行正/反向编序，即使 the ERC 检测到文件不一致。这可以通过设置该参数为 '1' 来完成。<b>请注意 YOU ARE DOING THIS AT 您自己的 RISK</b> - 如果文件 get corrupted in the process, there may be nothing anybody can do to recover them. After all, the ERC <b>did</b> state that the 文件 were 不一致!
<dt><b>Interface.MouseButtonReleaseTimeout</b>
<dd>
时间（in 毫秒）within which a 鼠标按键 release that follows a 鼠标按键 按 on a 按钮 (like, 比如, 工具栏按钮）triggers the 按钮的动作，即使 the 鼠标按键 release happened outside the 按钮's area. 缺省的 is 500, set this to 0 to 关闭 this feature. 如果该参数为 0 当 the 程序 is started, any change to it 将 only take effect the 下一次 the 程序 is started.
<dt><b>Interface.PreferredUnit</b>
<dd>
当显示数值值 in 对话框输入域中，单位是自动确认的，以便 the 呈现 with the least number of 十进制数字 is chosen. This can be controlled by setting 该参数为 '0' for 自动 unit determination (缺省的），'1' for imperial 单位, and '2' for metric 单位.
<dt><b>Interface.UseCtrlForPanning</b>
<dd>
Panning is done by moving the mouse while holding the 鼠标中键 (or 鼠标滚轮) down。在旧的版本中 this was done by 按 Ctrl 键 instead. 如果您 want the old functionality back, 您可以设置该参数为 '1'。Note, though, that the Ctrl 键 is now used for 特殊功能 in some 命令, so 当使用这些特殊功能（比如选择 an 对象 at 它的原点 in MOVE) with 该参数 enabled you may inadvertently pan 您的 draw window. 
<dt><b>Option.AutoLoadMatchingDrawing文件</b>
<dd>
如果您 have a PCB 图和原理图编辑器窗口 open and 载入 an 其它board (or 原理图) in one of 这些 windows, and if that 其它绘图 has a matching 原理图 (or board），EAGLE asks whether that 其它绘图 shall also be 载入的. By setting 该参数 to '1', this query can be suppressed, and EAGLE 将 始终 自动地载入其它绘图.
<dt><b>Option.DrawUnprocessedPolygonEdgesContinuous</b>
<dd>
如果您 don't like the way unprocessed 多边形s display their edges (as dotted lines），您可以 设置该参数为 '1'. The edges of unprocessed 多边形s 将 then be displayed as continuous lines, as was the case before 版本 5 (however, they 将 not be 高亮ed).
<dt><b>Option.LayerSequence</b>
<dd>
内层 are rendered in a sequence that mimics the 实际的层堆叠，以便 the result looks useful even on 打印机s and PDF 或 PostScript 文件, where layers are not transparent. Sometimes 用户定义的层 may need to be rendered before 内层 instead of after them. 该参数可以用于定义 the sequence in which layers are rendered. It 包含 a string of layer numbers 或 layer ranges, followed by an 可选的 't' 或 'b'.
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>123</td> <td width=20><td>renders layer 123</td></tr>
<tr><td>123t</td><td width=20><td>renders layer 123 if the 输出 is "viewed from top" (not mirrored)</td></tr>
<tr><td>123b</td><td width=20><td>renders layer 123 if the 输出 is "viewed from bottom" (mirrored)</td></tr>
<tr><td>123-140</td><td width=20><td>renders layers 123 through 140 in the 给定的 sequence</td></tr>
<tr><td>140-123</td><td width=20><td>renders layers 140 through 123 in the 给定的 sequence</td></tr>
<tr><td>*</td><td width=20><td>inserts the 缺省的 sequence of the 内层</td></tr>
<tr><td>123b * 123t</td><td width=20><td>makes layer 123 始终 be rendered 第一个</td></tr>
</table>
<dd>
请注意，每个层只 is rendered 一次, 即使 it is listed several times.
内层缺省的顺序为：<br>
48t 49t 19t 47t 20t 46t 23 27 25 59 57 55 53 50 51 21 44t 45t 37 35 31 29 33 39 41 43t 18t 17t 1-16 17b 18b 43b 42 40 34 30 32 36 38 45b 44b 22 52 54 56 58 60 26 28 24 46b 20b 47b 19b 49b 48b 61-99.<br>
当 viewed from top, the layer sequence is rendered from right to left, while 当 viewed from bottom (mirrored) it is rendered from left to right. 比如, layer 48 (Document) is entered as 48t and 48b to 始终 have it rendered as the last one. Layers 21 (tPlace) and 22 (bPlace），on the 其它hand, are listed only 一旦, to have them rendered at the proper place, 依赖于 whether the 输出 is mirrored 或 not.<br>
Any layers that are not 明确地 mentioned in the layer sequence are rendered after the 给定的 sequence in ascending order.
<dt><b>Option.RatsnestLimit</b>
<dd>
RATSNEST 命令处理一个信号的所有点，即便信号很复杂（in previous 版本s it dropped wire 端点 from processing if the total number of 连接 points exceeded 254）。这需要更多内存 当 calculating the ratsnest. In case this is a problem on 您的系统上，您可以 revert to the 原始的 method by setting 该参数 to '254'.  值 给定的 here is the number of 连接 points up to which 所有 wire 端点 将 be 被考虑在内 and thus limits the amount of memory used (processing 将 use up to the square of this 值 in bytes, so a 值 of 1024 将 limit the used memory to 1MB). A 值 of '0' means there is no limit. A 值 of '1' 将 result in 鼠线 being 连接的 only to 焊盘, smds and 过孔.
<dt><b>Option.RepositionMouse光标After上下文Menu</b>
<dd>
通常，EAGLE 不自动地 定位 the 鼠标光标。然而，某些用户 want the 光标 to be repositioned to the point where it has been before a 右键菜单 in the 绘图 editor was opened。设置该参数为 '1' to get this functionality.
<dt><b>Option.ShowPart原点s</b>
<dd>
在原理图中，零件的原点 are indicated by small crosses. 设置该参数为 '0' 以关闭它。
<dt><b>Option.ShowText原点s</b>
<dd>
The 原点s of texts are indicated by small crosses. 设置该参数为 '0' 以关闭它。
<dt><b>Option.ToggleCtrlForGroupSelectionAnd上下文Menu</b>
<dd>
由于右键菜单 function on the 鼠标右键 干扰 with the selection of groups as it was done before 版本 5, a 组 is now 所选的 with Ctrl plus 鼠标右键. 如果 您想要 have the old method of 选择 groups back, 您可以 设置该参数为 '1'。这将允许 选择 groups with the 鼠标右键 only and require Ctrl plus 鼠标右键 for 右键菜单.
<dt><b>Sch.Cmd.Add.始终UseDeviceNameAsValue</b>
<dd>
某些用户始终想要用元件名称作为零件的值，即使零件需要用户提供值。Those who want this can 设置该参数为 '1'.
<dt><b>Warning.PartHasNoUserDefinableValue</b>
<dd>
如果您不想要关于一个零件不具有用户可定义的值的警告消息，您可以通过设置该参数为“0”来关闭它。
<dt><b>Warning.SupplyPinAutoOverwrite生成dNetName</b>
<dd>
某些用户不想 警告消息 about a 供电引脚 覆写 a 生成d 网络名称。设置该选项为“1”以禁止该警告。
</dl>


<a name=95>
<h1>SHOW</h1>
<dl>
<dt>
<b>功能</b>
<dd>
高亮对象。
<dt>
<b>语法</b>
<dd>
<tt>SHOW &#149;..</tt><br>
<tt>SHOW name..</tt><br>
<tt>SHOW @ name..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Left</mb> 切换所选的对象显示状态。
</dl>
<b>另请参阅</b> <a href=#58>INFO</a>
<p>
SHOW 命令用于使对象高亮。详情列在状态栏中。整个信号和网络可以用 SHOW 命令来高亮。如果选择了总线，所有从属于该总线的网络也将被高亮。
<h2>Cross Probing</h2>
With active <a href=#362>正向&amp;反向编序</a> an 电路板中用 SHOW 命令高亮的对象在原理图中也将是高亮的，and vice versa.
<h2>不同的对象</h2>
如果您 选择 不同的 对象 with the SHOW 命令 每个 single 对象 is 高亮ed separately。您可以 选择 more than one 对象 for 高亮ing by 按 Ctrl 键 当 clicking on the 对象. 当 you click on an 对象 that is 已经是高亮ed with the Ctrl 键 pressed, that 对象 将 be displayed non-高亮ed again. <p>
如果 several names are entered in one line, 所有匹配的对象 are 高亮ed at the same time.
<h2>Small 对象</h2>
如果 <tt>@</tt> 字符是在命令行中给定的，pointer rectangle is drawn around the shown 对象。这有助于定位 small 对象 that 将n't show up too well just through 高亮ing. 如果 more than one 对象 is shown, the rectangle is drawn around 所有对象。It 可能需要缩小（or do a WINDOW FIT 命令）以便 see the pointer. 如果 an 对象 with the literal name <tt>@</tt> shall be shown, the 名称 must be enclosed in 单引号s.
<h2>通配符</h2>
如果给定了 <tt>name</tt> 参数，字符 <tt>'*'</tt>, <tt>'?'</tt> and <tt>'[]'</tt> are <i>通配符</i> and have the 以下含义：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>*</tt>  </td><td width=20><td>匹配任意数量的任何字符</td></tr>
<tr><td><tt>?</tt>           </td><td width=20><td>匹配精确一个字符</td></tr>
<tr><td><tt>[...]</tt>       </td><td width=20><td>匹配 any of the 字符 between the 方括号</td></tr>
</table>
<p>
如果 any of 这些 字符 shall be matched 精确 as such, it has to be enclosed in 方括号. 例如, <tt>abc[*]ghi</tt> 将 match <tt>abc*ghi</tt> and not <tt>abcdefghi</tt>.
<p>
A 范围 of 字符 can be 给定的 as <tt>[a-z]</tt>, which results in any 字符 in the 范围 <tt>'a'</tt>...<tt>'z'</tt>.
<p>
The special 模式 <tt>[number..number]</tt> forms a <a href=#35>bus 名称 范围</a> and is therefore not 被看作 a 通配符 模式 in a 原理图.
<h2>对象 on 不同的 图纸</h2>
如果 an 对象 给定的 by 名称 is 没有找到 on the 当前的原理图图纸，a dialog is presented 包含 a list of 图纸 on which the 对象 is found. 如果对象 is 没有找到 on any 图纸, the 图纸 number is '-' in this list. 请注意该对话框 only appears if any of the 对象 给定的 by 名称 (or 通配符) is 没有找到 on the 当前的图纸。If 所有 给定的 对象 are found on the 当前的sheet, no dialog appears (即使 some of the 对象 are also present on 其它图纸). 一旦 the dialog appears, it 包含 所有 对象 found, even 那些 on the 当前的sheet.
<h2>例子</h2>
<pre>
SHOW IC1
</pre>
IC1 is 高亮ed and remains 高亮ed until the SHOW 命令 is ended 或 a 不同的 名称 is entered.
<pre>
SHOW IC*
</pre>
高亮所有名称以“IC”开始的对象。


<a name=96>
<h1>SIGNAL</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义信号。
<dt>
<b>语法</b>
<dd>
<tt>SIGNAL &#149; &#149;..</tt><br>
<tt>SIGNAL signal_name &#149; &#149;..</tt><br>
<tt>SIGNAL signal_name ELEMENT_name pad_name..;</tt>
</dl>
<b>另请参阅</b> <a href=#33>AUTO</a>，<a href=#91>ROUTE</a>，<a href=#70>NAME</a>，<a href=#38>CLASS</a>，<a href=#109>WIRE</a>，<a href=#83>RATSNEST</a>，<a href=#51>EXPORT</a>
<p>
The SIGNAL 命令 用于 定义 信号 (连接 between the various 封装). The 用户 must 定义 a 最小的 of 两个 ELEMENT_name/pad_name pairs, as otherwise no 鼠线 can be 生成d.
<h2>Mouse Input</h2>
To do that you 选择 (with the mouse) the 焊盘 (or smds) of the 元素s to be 连接的, step by step. EAGLE 显示 the part 信号 as 鼠线 in the Unrouted layer.
<p>
如果 输入 with signal_name the 信号 将 be allocated the specified 名称.
<h2>Text Input</h2>
Signals may also be defined completely by text 输入 (via 键盘 或 脚本文件). The command
<pre>
SIGNAL GND IC1 7 IC2 7 IC3 7;
</pre>
connects 焊盘 7 of IC1...3. In order to enter a whole netlist, a 脚本 file may be 生成d, with the extension *.scr. This file should include 所有 of the necessary SIGNAL 命令 in the format shown above.
<h2>On-line Check</h2>
如果 SIGNAL 命令用于连接焊盘（或 smds） that already belong to 不同的信号, a 弹出菜单 将 appear and ask the 用户 if he wants to connect the 信号 together, and which 名称 the 信号 should get.
<h2>Outlines data</h2>
The special 信号 名称 _OUTLINES_ gives a 信号 certain properties that are used to 生成 <a href=#133>outlines data</a>. This 名称 should not be used otherwise.


<a name=97>
<h1>SMASH</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    Separates text 变量 and 属性 from parts 或 元素s.
<dt>
<b>语法</b>
<dd>
<tt>SMASH &#149;..</tt><br>
<tt>SMASH name ..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Ctrl+Right</mb> smashes 组.<br>
<mb>Shift+Left</mb> reverses the text separation ("unsmashes" the part).<br>
<mb>Ctrl+Shift+Right</mb> reverses the text separation for 组.
</dl>
<b>另请参阅</b> <a href=#70>NAME</a>，<a href=#105>VALUE</a>，<a href=#101>TEXT</a>，<a href=#32>ATTRIBUTE</a>
<p>
SMASH 命令 is used with parts 或元素 以便 separate the text 参数 indicating 名称, 值 或 属性。文字 may then be placed in a new and more convenient 位置 with the MOVE 命令。
<p>
零件 and 元素s can also be 所选的 by their 名称, which is 特别有用 if the 对象 is outside the 当前 显示的窗口区域. 请注意 当 选择 a 多单元零件 in a 原理图 by 名称, you 将 need to enter the full instance 名称, consisting of part and 单元 名称.
<p>
Use of the SMASH 命令 allows the text to be treated like any other text, e.g. 改变SIZE, ROTATE, etc., but the 实际的 text may not be changed.
<p>
A "smashed" 元素 can be made "unsmashed" by clicking on it with the <tt>Shift</tt> 键 pressed (and of course the SMASH 命令 activated).


<a name=98>
<h1>SMD</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    Adds smd 焊盘 to a 封装.
<dt>
<b>语法</b>
<dd>
<tt>SMD [x_width y_width] [-roundness] [orientation] [flags] ['name'] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选择层。<br>
<mb>Right</mb> 旋转 smd.<br>
<mb>Shift+Right</mb> 反转旋转方向。
</dl>
<b>另请参阅</b> <a href=#75>PAD</a>，<a href=#36>CHANGE</a>，<a href=#70>NAME</a>，<a href=#91>ROUTE</a>，<a href=#136>设计规则</a>
<p>
SMD 命令用于 添加焊盘 for 表面贴装元件 to a 封装. 当 SMD 命令激活时，an smd 符号被附在光标上。点击鼠标左键在当前位置放置 an SMD 焊盘。输入 numbers 改变 the x- and y-width of the SMD 焊盘, which can be up to 0.51602 inch (13.1 mm). 这些 参数 remain as defaults for 连续的 SMD 命令 and can be changed with the 改变命令。按 鼠标中键 改变 the layer onto which the SMD 焊盘 将 be drawn.
<p>
The <tt>orientation</tt>（参见 描述 in <a href=#29>ADD</a>) 可以为范围 <tt>R0</tt>...<tt>R359.9</tt> 中的任意角度。The <tt>S</tt> and <tt>M</tt> 标志s can't be used here.
<h2>Roundness</h2>
<tt>roundness</tt> 必须输入为 <tt>0</tt> 与 <tt>100</tt> 之间的整数，with a negative sign to distinguish it from the width 参数。A 值 of <tt>0</tt> results in fully rectangular smds, while a 值 of <tt>100</tt> makes the corners of the smd fully round. The command
<pre>
SMD 50 50 -100 '1' &#149;
</pre>
例如 将 建立 a completely round smd named '1' at the 给定的鼠标点击位置。这可以用于建立 BGA (Ball Grid Array) 焊盘。
<h2>任意焊盘形状</h2>
如果标准的 smd 焊盘形状 are not 满足 for a 特定的 封装, 您可以 建立任意 SMD 焊盘形状 通过绘制多边形 around an SMD 焊盘, 或 通过绘制 wires that have 一端连接到 smd 焊盘。
<p>
以下条件适用：
<ul>
<li>A 多边形 is considered 连接ed 到 an SMD 焊盘 on the 同一层 if the 焊盘的中心 lies within the area defined by the 中心线 of the 多边形 wires.
<li>A wire is considered 连接ed 到 an SMD 焊盘 on the 同一层 if one of 它的 端点 coincides with the 焊盘的中心. Any wire 连接ed 到 the 另一端 of such a wire is also electrically 连接ed 到 the 焊盘.
<li>The DRC 将 not check such wires and 多边形s for 最小的 width.
<li>Only <b>one</b> 多边形 per 焊盘 被考虑在内. 如果 more than one 多边形 is 连接ed 到 the same 焊盘, they 将 cause DRC errors.
<li>Polygons 连接ed 到 a 焊盘 将 be ignored by the 自动布线器 当 routing that 信号. They 将 be considered obstacles 当 routing 其它信号。
<li>Wires 连接ed 到 a 焊盘 将 be 处理d like any 其它signal wires by the 自动布线器, with the exception that they cannot be split。
<li>Solder stop and cream masks are only 生成d for the 焊盘 自身. 如果 any additional solder stop 或 cream mask is required, it has to be drawn 明确地 into the
    各自的 layer(s).
<li>当 生成 thermals, the additional 多边形 形状 被考虑在内.
<li>如果 a 多边形 或 wire is 连接ed 到 more than one 焊盘 within a 封装, only one of the 焊盘 将 be considered electrically 连接ed 到 the 多边形 或 wire.
    The 其它pads 将 cause DRC errors, 除非 they are all <a href=#40>连接ed 到 the same pin</a> in a device.
<li>如果 a C-shaped 多边形 连接ed 到 a 焊盘 将 cause a 信号多边形 在电路板图中 to have an "orphan" that lies within the C area, such an orphan 将 disappear
    regardless whether the 信号 多边形 in question has 它的 Orphans 参数 set to on 或 off.
</ul>
<h2>Names</h2>
SMD 名称是生成自动地 and may be modified with the NAME 命令。 Names may be included in the SMD 命令 if enclosed in 单引号s.
<h2>Flags</h2>
以下 <i>flags</i> 可以用于 control the appearance of an smd:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>NOSTOP</tt>  </td><td width=20><td>不生成 solder stop mask</td></tr>
<tr><td><tt>NOTHERMALS</tt>       </td><td width=20><td>不生成阻热（焊盘）</td></tr>
<tr><td><tt>NOCREAM</tt>          </td><td width=20><td>不生成 cream mask</td></tr>
</table>
<p>
默认情况下，an smd 自动地 产生 solder stop mask, cream mask and thermals as necessary. However, in special cases it may be desirable to have 特定的 smds not do this. The above <tt>NO...</tt> 标志s 可以用于 suppress 这些 features.<br>
A newly started SMD 命令 resets 所有 标志s to their defaults. 一旦命令行中给定了标志，it 适用于所有跟着的 smds placed within this SMD 命令。
<h2>Single Smds</h2>
Single smd 焊盘 in PCB 图 只能 be used by 定义ing a 封装 with one smd.
<h2>Alter Package</h2>
这是不可能的 to 添加或删除 smds in 封装 which are already used by a device, because this 将 改变the pin/smd allocation defined with the CONNECT 命令。


<a name=99>
<h1>SPLIT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
将 wires 和多边形的边分成段。
<dt>
<b>语法</b>
<dd>
<tt>SPLIT &#149; [curve | @radius] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Right</mb> 改变导线弯折样式（参见 <a href=#94>SET Wire_Bend</a>）。<br>
<mb>Shift+Right</mb> reverses the direction of switching 弯折样式s.<br>
<mb>Ctrl+Right</mb> toggles between 相应的 弯折样式s.<br>
<mb>Ctrl+Left</mb> 当放置 a wire 端点 定义了 arc 半径.
<dt>
<b>键盘</b>
<dd>
<tt>F8: SPLIT</tt> 激活 SPLIT 命令。
</dl>
<b>另请参阅</b> <a href=#68>MITER</a>，<a href=#69>MOVE</a>，<a href=#73>OPTIMIZE</a>，<a href=#94>SET</a>
<p>
SPLIT 命令用于把一条直线（或段）或多边形的边按顺序分成两个段，例如, to introduce a bend。这意味着您可以 split wires into parts that can be moved with the mouse during the SPLIT 命令。 A mouseclick 定义了 the point at which the wire is split。两个新的段中短的段 follows the 当前的导线弯折规则 and may therefore 自身变成两个段（参见 SET Wire_Bend），长的段 为直线段 running to the 下一个端点。
<p>
如果给定了 <i>curve</i> 或 <i>@radius</i> 参数，圆弧可以绘制为导线段的一部分（参见 <a href=#109>WIRE</a> 命令中的详细描述）。
<p>
On completion of the SPLIT 命令，the 段s are 自动地 rejoined if they are in line 除非 命令
<pre>
SET OPTIMIZING OFF;
</pre>
has previously been 给定的, 或 the wire has been clicked at the same spot twice. 在这种情形下 the split points remain and can be used, 例如，<b>减小一个段的宽度</b>。这可以通过选择 SPLIT 命令达成，marking the part of the wire which is to be 减小d with 两次鼠标点击，并使用命令
<pre>
CHANGEWIDTH width
</pre>
The 段 is then clicked on to 完整的 the change.


<a name=100>
<h1>TECHNOLOGY</h1>
<dl>
<dt>
<b>功能</b>
<dd>
为给定名称的元件定义可能的 <i>technology</i> 部分。
<dt>
<b>语法</b>
<dd>
<tt>TECHNOLOGY name ..;</tt><br>
<tt>TECHNOLOGY -name ..;</tt><br>
<tt>TECHNOLOGY -* ..;</tt>
</dl>
<b>另请参阅</b> <a href=#74>PACKAGE</a>，<a href=#32>ATTRIBUTE</a>
<p>
该命令用在元件编辑模式中，定义可能的 <i>technology</i> parts of a 设备名称。在原理图或PCB图编辑器中，TECHNOLOGY 命令 behaves 精确 like "<a href=#36>CHANGE TECHNOLOGY</a>"。
<p>
Exactly one of the names 给定的 in the TECHNOLOGY 命令 将被用于替换 the <tt>'*'</tt> in the 器件 name 当 an 实际的元件添加到原理图。The term <i>technology</i> stems from the main usage of this feature in 建立不同的变体 of the same basic device, which 所有具有相同的原理图符号、相同的封装以及相同的引脚/焊盘连接。唯一的区别 They only differ in a part of their 名称, which for the 传统（经典的）的 TTL 元件 is related to their 不同的技术（工艺），like "L", "LS" 或 "HCT".
<p>
TECHNOLOGY 命令 只能 be used if a 封装变体 has been 所选的 with the <a href=#74>PACKAGE</a> 命令。
<p>
如果 no <tt>'*'</tt> 字符 is present in the 器件 名称, the 技术（工艺） 将 be appended to the 器件 名称 to form the full 元件名称。请注意，技术（工艺） is processed before the 封装变体，所以如果 器件 名称 包含 neither a <tt>'*'</tt> nor a <tt>'?'</tt> 字符, the resulting 设备名称 将 consist of <i>device_set_name</i><tt>+</tt><i>technology</i><tt>+</tt><i>package_variant</i>.
<p>
The names listed in the TECHNOLOGY 命令 将 be added to an already existing list of technologies for the 当前的元件。Starting a 名称 with <tt>'-'</tt> 将 remove that 名称 from the list of technologies. 如果 a 名称 shall begin with <tt>'-'</tt>, it has to be enclosed in 单引号。用 <tt>-*</tt> 移除所有技术（工艺）。
<p>
仅在范围 33..126 内的 ASCII 字符可以用于技术工艺（小写字母会被转换成大写）
<p>
The special "empty" 技术（工艺） 可以输入为两个单引号（<tt>''</tt>，一个空字串）。
<p>
请注意 the Technologies dialog 包含所有 technologies from 所有 devices in the 载入的元件库, with the ones referenced by the 当前的device checked.
<h2>例</h2>
In a 元件 名称d "<tt>74*00</tt>" 命令
<pre>
        TECHNOLOGY -* '' L LS S HCT;
</pre>
会先移除任何已有的工艺，然后建立 单独的 技术（工艺） 变体
<pre>
7400
74L00
74LS00
74S00
74HCT00
</pre>


<a name=101>
<h1>TEXT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    Adds text to a 绘图。
<dt>
<b>语法</b>
<dd>
<tt>TEXT  any_text  [orientation] &#149;..</tt><br>
<tt>TEXT 'any_text' [orientation] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选择层。<br>
<mb>Right</mb> 旋转文本。<br>
<mb>Shift+Right</mb> reverses the 旋转方向.
</dl>
<b>另请参阅</b> <a href=#36>CHANGE</a>，<a href=#69>MOVE</a>，<a href=#67>MIRROR</a>，<a href=#77>PIN</a>，<a href=#90>ROTATE</a>，<a href=#32>ATTRIBUTE</a>
<p>
TEXT 命令用于添加文字到元件库元素或绘图中。当 输入 several texts it is not necessary to invoke the 命令 each time, as the TEXT 命令 remains active after 放置 text with the mouse.
<h2>Orientation</h2>
The 方向 of the text may be defined by the TEXT 命令 (方向) using the usual 定义 as listed in the <a href=#29>ADD</a> 命令 (R0, R90 etc.). The 鼠标右键 将 改变the rotation of the text and the 鼠标中键 将 改变the 当前的layer.
<p>
Text is 始终 displayed 以便 it can be read from in front 或 from the right - 即使 rotated. Therefore after 每个 两个 rotations it appears the same way, but the 原点 has moved from the lower left to the upper right corner. Remember this if a text appears to be unselectable.
<p>
The reading direction for vertical texts can be changed from "up" to "down" in the <a href=#16>用户 interface dialog</a>.
<p>
如果 您想要 have text that is printed "upside down", 您可以 set the "Spin" 标志 for that text.
<h2>特殊字符</h2>
如果 text 包含 several 连续的 blanks 或 a 分号, the whole string has to be enclosed in 单引号s. 如果 text 包含 单引号s then each one 自身 has to be enclosed in 单引号s. 
如果 apostrophes are required in the text, each must be enclosed in 单引号s.
<h2>关键字</h2>
如果 TEXT 命令 is active and 您想要 type in a text that 包含 a string that can be mistaken for 一个命令 (e.g. "red" for "REDO") then this string has to be enclosed in 单引号s.
<h2>Text Height</h2>
The height and thickness of 字符 can be changed with the CHANGE 命令：
<pre>
CHANGE SIZE text_size &#149;..
CHANGE RATIO ratio &#149;..
CHANGE LINEDISTANCE value &#149;..
</pre>
最大的 text height:  2 inches<br>
最大的 text thickness: 0.51602 inch (13.1 mm)<br>
Ratio: 0...31 (% of text height)<br>
Line 距离: 0...250 (% of text height).
<h2>字体</h2>
    文字可以有三种不同的字体：
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>Vector</tt></td>           <td width=20><td>the 程序's internal vector 字体</td></tr>
<tr><td><tt>Proportional</tt></td>     <td width=20><td>a proportional pixel 字体 (usually 'Helvetica')</td></tr>
<tr><td><tt>Fixed</tt></td>            <td width=20><td>a monospaced pixel 字体 (usually 'Courier')</td></tr>
</table>
<p>
The text 字体 can be changed with the CHANGE 命令：
<pre>
CHANGE FONT VECTOR|PROPORTIONAL|FIXED &#149;..
</pre>
The 程序 makes great efforts to 输出 texts with fonts otherthan <tt>Vector</tt> as good as possible. However, 因为 the 实际的 字体 is drawn by the system's graphics interface, <tt>Proportional</tt> and <tt>Fixed</tt> fonts may be 输出 with 不同的 sizes and/or 长度s.
<p>
如果您 set the 选项 "始终 vector font" in the <a href=#16>用户 interface dialog</a>, 所有 texts 将 始终 be displayed and printed using the builtin vector 字体, independent from the 设置 of the 单独的 texts and for each 绘图. This 选项 is useful if the system 不 display the 其它fonts correctly.<br>
当 creating a new PCB图或 原理图, the 当前的setting of 该选项 is 存储在 the 绘图 文件。 This makes sure that the 绘图 将 be printed with the correct setting if it is transferred to somebody else who has a 不同的 setting of 该选项.<br>
您可以 use the <tt><a href=#94>SET</a> VECTOR_FONT OFF|ON</tt> 命令 to 改变the setting in an 现有的 PCB图或 原理图 绘图.
<p>
当 creating 输出文件 with the CAM 处理器, texts 将 始终 be drawn with <tt>Vector</tt> 字体. 其它fonts are not supported.
<p>
如果 a text with a 字体 otherthan <tt>Vector</tt> is subtracted from a 信号 多边形, only the sur取整rectangle is subtracted. Due to the above mentioned possible size/长度 problems, the actually printed 字体 may exceed that rectangle. Therefore, 如果您 need to subtract a text from a 信号 多边形 it is 推荐的 that you use the <tt>Vector</tt>
字体.
<p>
The <i>Ratio</i> 参数 has no meaning for texts with fonts otherthan <tt>Vector</tt>.
<h2>Text Alignment</h2>
The text alignment 定义了 where the 原点 shall be put within the text. There are nine 不同的 possible alignments, which consist of 组合s of the 关键字 <tt>left</tt>, <tt>bottom</tt>, <tt>center</tt>, <tt>right</tt> and <tt>top</tt>. 这些 关键字 can be 给定的 in any sequence, but only the last one of left/right and top/bottom 将 be 被考虑在内 for the 各自的 direction. The center 关键字 only applies to 那些 directions where no 其它关键字 has been 给定的. 默认为 left and bottom.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>改变ALIGN TOP CENTER; TEXT 'ABC' &#149;</tt>   </td><td width=20><td>draws the text ABC with the 原点 at 它的 top/center</td></tr>
</table>
<h2>字符集</h2>
Only the 字符 with ASCII codes below 128 are guaranteed to be printed correctly. Any 字符 above this may be system dependent and may yield 不同的 results with the various fonts.
<h2>Text 变量</h2>
Special texts in a 符号或封装 绘图, marked with the <tt>'&gt;'</tt> 字符, 将 被替换 with 实际的值s in a PCB图或 原理图:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>&gt;NAME</tt>             </td><td width=20><td>Component 名称 (ev.+gate name) 1)</td></tr>
<tr><td><tt>&gt;VALUE</tt>            </td><td width=20><td>Comp. value/type 1)</td></tr>
<tr><td><tt>&gt;PART</tt>             </td><td width=20><td>Component name 2)</td></tr>
<tr><td><tt>&gt;GATE</tt>             </td><td width=20><td>Gate name 2)</td></tr>
<tr><td><tt>&gt;XREF</tt>             </td><td width=20><td>Part 对比参考 2)</td></tr>
<tr><td><tt>&gt;CONTACT_XREF</tt>     </td><td width=20><td>Contact 对比参考 2)</td></tr>
<tr><td><tt>&gt;ASSEMBLY_VARIANT</tt> </td><td width=20><td>当前组装变体的名称</td></tr>
<tr><td><tt>&gt;绘图_NAME</tt>     </td><td width=20><td>绘图 name</td></tr>
<tr><td><tt>&gt;LAST_DATE_TIME</tt>   </td><td width=20><td>上一次修改的时间</td></tr>
<tr><td><tt>&gt;PLOT_DATE_TIME</tt>   </td><td width=20><td>上一次绘制的时间</td></tr>
<tr><td><tt>&gt;SHEETNR</tt>          </td><td width=20><td>Sheet number of a 原理图 3)</td></tr>
<tr><td><tt>&gt;图纸</tt>           </td><td width=20><td>Total number of 图纸 of a 原理图 3)</td></tr>
<tr><td><tt>&gt;SHEET</tt>            </td><td width=20><td>equivalent to "&gt;SHEETNR/&gt;图纸" 3)</td></tr>
</table>
<p>
1) Only for 封装 或 符号<br>
2) Only for 符号<br>
3) Only for 符号 或 原理图
<p>
The format in which a part 对比参考 is displayed can be controlled through the "Xref part format" 字符串，which is defined in the "Options/Set/Misc" dialog, 或 with the <a href=#94>SET</a> 命令。 The 以下 占位符 are defined, and can be used in any order:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>%S</tt></td>  <td width=20><td>the 图纸 number</td></tr>
<tr><td><tt>%C</tt></td>  <td width=20><td>the column on the 图纸</td></tr>
<tr><td><tt>%R</tt></td>  <td width=20><td>the row on the 图纸</td></tr>
</table>
<p>
缺省的格式化字符串为 <tt>"/%S.%C%R"</tt>。Apart from the defined 占位符 占位符 您也可以使用任何其它 ASCII 字符.
<h2>Attributes</h2>
如果 a 符号 或封装绘图 shall display an <a href=#32>属性</a> of the 实际的 part 或 元素, a text with the 名称 of that 属性, marked with the <tt>'&gt;'</tt> 字符, can be used. By 缺省的, only the 实际的值 of the 给定的 属性 将 be displayed. 如果 属性 名称 is followed by one of the special 字符 <tt>'='</tt>, <tt>'~'</tt> 或 <tt>'!'</tt>, the 实际的 display is as follows:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td with=100><tt>&gt;ABC </tt></td><td width=20><td><tt>123</tt></td></tr>
<tr><td><tt>&gt;ABC=</tt></td><td width=20><td><tt>ABC = 123</tt></td></tr>
<tr><td><tt>&gt;ABC~</tt></td><td width=20><td><tt>ABC</tt></td></tr>
<tr><td><tt>&gt;ABC!</tt></td><td width=20><td><tt><i>nothing</i></tt></td></tr>
</table>
<p>
请注意 for 每个属性名称 there should be only one such text in any 给定的 符号或封装! 如果 there is more than one such text in a 符号或封装 that 所有 reference the same 属性 名称, only one of them 将 be displayed 当 the part using this 符号或封装 is smashed.
<h2>Overlined text</h2>
Text can be <i>overlined</i>, which is useful 比如 for the names of 反相的 信号 ("active low", see also <a href=#71>NET</a>, <a href=#35>BUS</a> and <a href=#77>PIN</a>). To do so, the text needs to be preceded with an exclamation mark (<tt>'!'</tt>),比如
<pre>
  !RESET
</pre>
which 会导致
<pre>
  _____
  RESET
</pre>
This is not limited to 信号 names, but 可以用can be used in any text. It is also possible to overline only part of a text,比如
<pre>
  !RST!/NMI
  R/!W
</pre>
which 会导致
<pre>
  ___
  RST/NMI
    _
  R/W
</pre>
请注意 the second exclamation mark indicates the end of the overline. There can be any number of overlines in a text. 如果 a text shall 包含 an exclamation mark that 不 生成 an overline, it needs to be escaped by a 反斜线. In order to keep the need for escaping exclamation marks at a 最小的, an exclamation mark 不 start an overline if it is the last 字符 of a text, 或 if it is immediately followed by a blank, another exclamation mark, a 双 或 单引号, 或 by a right parenthesis, bracket 或 brace. Any non-escaped exclamation mark 或 逗号 that appears after an exclamation mark that started an overline 将 end the overline (the 逗号 as an overline terminator is necessary for busses).


<a name=102>
<h1>UNDO</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Cancels previous 命令。
<dt>
<b>语法</b>
<dd>
<tt>UNDO</tt><br>
<tt>UNDO LIST</tt>
<dt>
<b>键盘</b>
<dd>
<tt>F9:     UNDO</tt>   execute the UNDO 命令。
<tt>Alt+BS: UNDO</tt>
</dl>
<b>另请参阅</b> <a href=#85>REDO</a>，<a href=#94>SET</a>，<a href=#362>正向&amp;反向编序</a>
<p>
The UNDO 命令 allows you to cancel previously executed 命令。This is 特别有用 如果您 have deleted things by accident. Multiple UNDO 命令 cancel the 相应的 number of 命令 until the last EDIT, OPEN 或 REMOVE 命令 is reached.
<p>
The UNDO 命令 uses up memory space. 如果您 are short of this 您可以 switch off this function with the SET 命令 
<pre>
SET UNDO_LOG OFF;
</pre>
UNDO/REDO is completely integrated within 正向&amp;反向编序.
<h2>UNDO buffer dialog</h2>
The 选项 LIST in the UNDO 命令 opens a dialog that 包含 the entire contents of the undo buffer. 您可以 navigate through the list of undo/redo steps by click&amp;dragging the list 分隔符, 或 by directly clicking on any 给定的 step you wish to go back 或 forward to. 如果 there are several steps between the 当前的delimiter position and the clicked list item, 所有 steps in between 将 be executed in the proper sequence. Going upward in the list means doing UNDO, going downward results in REDO.<br>
The 图标 at each list item indicates in which 绘图 this 特定的 命令 has been executed.
<p>
如果您 confirm this dialog with "OK", the 绘图 将 be left in the condition as 所选的 in the list. 如果 您可以cel the dialog, it 将 be restored to the condition it had before the dialog was opened.
<p>
<b>CAUTION:</b> this 为very powerful tool! By going 所有 the way back in the UNDO list (which can be done with a single mouse click) and 执行 any new 命令，the undo buffer 将 be truncated at that point, and there is no way back! So use this with care!


<a name=103>
<h1>UPDATE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
更新 元件库 对象.
<dt>
<b>语法</b>
<dd>
<tt>UPDATE</tt><br>
<tt>UPDATE;</tt><br>
<tt>UPDATE library_name..;</tt><br>
<tt>UPDATE package_name@library_name..;</tt><br>
<tt>UPDATE +@ | -@ [library_name..];</tt><br>
<tt>UPDATE old_library_name = new_library_name;</tt>
</dl>
<b>另请参阅</b> <a href=#29>ADD</a>，<a href=#88>REPLACE</a>
<p>
The UPDATE 命令 检查 the parts in a PCB图或 原理图 against their 各自的 元件库 对象 and 自动地 更新 them if they are 不同的. 如果 UPDATE is invoked from the 元件库编辑器, the 封装 within the 载入的 元件库 将 be updated from the 给定的 元件库.
<p>
如果您 activate the UPDATE 命令 without a 参数, a 文件对话框 将 be presented to 选择 the 元件库 from which to update.
<p>
如果 one ore more 元件库 are 给定的, only parts from 那些 元件库 将 be checked.
The 元件库 names can be either a plain 元件库 名称 (like "ttl" 或 "ttl.lbr") 或 a full 文件名 (like "/home/mydir/my工程/ttl.lbr" 或 "../lbr/ttl").
<p>
如果 a <tt>library_name</tt> 包含 blanks, it needs to be enclosed in 单引号s.
<h2>Update in a PCB图或原理图</h2>
如果 命令 is terminated with a <tt>';'</tt>, but has no 参数, 所有 parts 将 be checked.
<p>
如果第一个参数为 <tt>'+@'</tt>, the names of the 给定的 元件库 (or 所有 元件库, if none are 给定的) 将 get a <tt>'@'</tt> 字符 appended, followed by a number.
This 可以用于 make sure the 元件库 contained in a 绘图 将 not be modified 当 a part from a newer 元件库 with the 相同名称 is added to the 绘图. Library names that already end with a <tt>'@'</tt> 字符 followed by a number 将 not be changed. 
<p>
如果第一个参数为 <tt>'-@'</tt>, the <tt>'@'</tt> 字符 (followed by a number) of the 给定的 元件库 (or 所有 元件库, if none are 给定的) 将 be stripped from the 元件库 名称. 
This of course only works 如果没有 元件库 with that new 名称 already in the 绘图. 
<p>
Please 请注意 "UPDATE +@;" followed by "UPDATE -@;" (and vice versa) 不 necessarily result in the 原始的 set of 元件库 names, because the sequence in which the names are processed 依赖于 the sequence in which the 元件库 are 存储在 the 绘图 文件。
<p>
The 元件库 存储在 a PCB图或 原理图 绘图 are identified only by their base 名称 (e.g. "ttl"). 当 considering whether an update shall be performed，only the base 名称 of the 元件库 文件名 将 be 被考虑在内. 元件库 将 be searched in the 目录 specified under "元件库" in the <a href=#14>目录对话框</a>, from left to right. The 第一个 元件库 of a 给定的 名称 that is found 将 be taken. 请注意 the 元件库 names 存储在 a 绘图 are 处理d case insensitive. It 不 matter whether a specific 元件库 is 当前 "in use". 如果 a 元件库 is 没有找到, no update 将 be performed for that 元件库 and there 将 be no 错误消息.
<p>
Using the UPDATE 命令 in a 原理图 或 board that are 连接的 via active <a href=#362>正向&amp;反向编序</a> 将 act on both the 原理图 and the board.
<p>
At some point you may need to specify whether 单元, 引脚 或 焊盘 shall be mapped by their names 或 their 坐标. This is the case 当 the 各自的 元件库对象 have been renamed 或 moved. 如果 too many modifications have been made (例如, if a pin has been both renamed and moved) the automatic update may not be possible. In that case 您可以 either do the 元件库 modification in 两个 steps (one for renaming, another for moving），或 give the whole 元件库 对象 a 不同的 名称.
<p>
当 used with <tt>old_library_name = new_library_name</tt> (请注意 there has to be 至少 one blank before and after the <tt>'='</tt> 字符），the UPDATE 命令 locates the 元件库 named <i>old_library_name</i> in the 当前的PCB图或 原理图, and 更新 it with the contents of <i>new_library_name</i>. 请注意 <i>old_library_name</i> must be the pure 元件库 名称, without any path, while <i>new_library_name</i> may be a full path 名称. 如果 update was performed successfully, the 元件库 in the 当前的PCB 图/原理图文件 将 also be renamed accordingly - therefore this whole 操作 is, of course, only possible if <i>new_library_name</i> has not yet been used in the 当前的PCB图或 原理图.
<p>
<b>Note: You should 始终 run a <a href=#47>设计规则检查</a> (DRC) and an <a href=#49>Electrical Rule Check</a> (ERC) after a 元件库 update has been performed in a PCB图或 a 原理图!</b>
<h2>Update in a 元件库</h2>
The update in a 元件库 replaces 所有 封装 within that 元件库 with the 版本s from the 给定的 元件库.
<p>
By specifying the 封装 名称 (package_name@library_name) 您可以 have only a specific 封装 被替换.


<a name=104>
<h1>USE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Marks a 元件库 for use.
<dt>
<b>语法</b>
<dd>
<tt>USE</tt><br>
<tt>USE -*;</tt><br>
<tt>USE library_name..;</tt>
</dl>
<b>另请参阅</b> <a href=#29>ADD</a>，<a href=#88>REPLACE</a>
<p>
The USE 命令 marks a 元件库 for later use with the <a href=#29>ADD</a> 或 <a href=#88>REPLACE</a> 命令。
<p>
如果您 activate the USE 命令 without a 参数, a 文件对话框 将 appear that lets you 选择 a 元件库 文件。If a path for 元件库 has been defined in the "Options/目录" dialog, the 元件库 from the 第一个 entry in this path are shown in the 文件对话框.
<p>
The special 参数 <tt>-*</tt> causes 所有 previously marked 元件库 to be dropped.
<p>
<tt>library_name</tt> can be the full 名称 of a 元件库 或 it can 包含 通配符. 如果 <tt>library_name</tt> is the 名称 of a directory, 所有 元件库 from that directory 将 be marked.
<p>
The suffix <tt>.lbr</tt> can be 忽略ted.
<p>
请注意 当 adding a 元件或封装 to a 绘图, the 完整的 元件库 信息 for that 对象 is copied into the 绘图 file, 以便 you don't need the 元件库 for changing the 绘图 later.
<p>
改变 in a 元件库 have no effect on 现有的 绘图s. See the <a href=#103>UPDATE</a> 命令 if 您想要 update parts from modified 元件库.
<h2>Using 元件库 via the 控制面板</h2>
元件库 can be easily marked for use in the <a href=#12>控制面板</a> by clicking on their activation 图标 (which 改变 它的 color to indicate that this 元件库 is being used），或 by 选择 "Use" from the 元件库's 右键菜单.
Through the 右键菜单 of the "元件库" entry in the 控制面板 it is also possible to use <i>all</i> of the 元件库 或 <i>none</i> of them.
<h2>Used 元件库 and Projects</h2>
The 元件库 that are 当前 in use 将 be 存储在 the 工程文件 (if a 工程 is 当前 open).
<h2>例子</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>USE</tt>              </td><td width=20><td>打开文件对话框 to choose a 元件库</td></tr>
<tr><td><tt>USE -*;</tt>          </td><td width=20><td>drops 所有 previously marked 元件库</td></tr>
<tr><td><tt>USE demo trans*;</tt> </td><td width=20><td>marks the 元件库 demo.lbr and 所有 元件库 with names matching trans*.lbr</td></tr>
<tr><td><tt>USE -* /eagle/lbr;</tt>  </td><td width=20><td>第一个 drops 所有 previously marked 元件库 and then marks 所有 元件库 from the directory /eagle/lbr</td></tr>
</table>


<a name=105>
<h1>VALUE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
显示 and 改变 values.
<dt>
<b>语法</b>
<dd>
<tt>VALUE &#149;..</tt><br>
<tt>VALUE value &#149;..</tt><br>
<tt>VALUE name value ..</tt><br>
<tt>VALUE ON;</tt><br>
<tt>VALUE OFF;</tt>
</dl>
<b>另请参阅</b> <a href=#70>NAME</a>，<a href=#97>SMASH</a>，<a href=#106>VARIANT</a>
<h2>In Boards and 原理图s</h2>
元素可以赋值，例如，'1k' for a 电阻 或 '10uF' for a 电容。由 VALUE 命令完成。 The 命令 选择s an 元素 and 打开弹出菜单 that 允许您输入或修改值。
<p>
如果您 type in a 值 在您选择元素之前，then 所有 of the 随后 所选的 元素s 获得 this 值。This is very useful 如果您 want 比如 a number of resistors to have the same 值.
<p>
如果 参数 名称和值 are specified, the 元素 名称 gets the specified 值.
<p>
VALUE 命令只能用于缺省的组装变体。如果您想要改变 值 of another 组装变体, you need to use the <a href=#106>VARIANT</a> 命令。
<h2>例</h2>
<pre>
VALUE R1 10k R2 100k
</pre>
在这种情形下 more than one 元素 has been assigned a 值. This possibility can be used in 脚本文件:
<pre>
VALUE R1   10k \
      R2  100k \
      R3  5.6k \
      C1  10uF \
      C2  22nF \
      ...
</pre>
The '\' prevents the 以下 line from being mistaken for an EAGLE 关键字.
<h2>In Device Mode</h2>
如果 值 命令 is used in the device 编辑模式, the 参数 ON and OFF may be used:
<p>
On: Permits the 实际的值 to be changed in the 原理图.
<p>
Off: 自动地 enters the 实际的 设备名称 into the 原理图 (e.g.74LS00N). The 用户 只能 modify this 值 after a confirmation.


<a name=106>
<h1>VARIANT</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Manages 组装变体s.
<dt>
<b>语法</b>
<dd>
<tt>VARIANT</tt><br>
<tt>VARIANT name part_name [NO]POPULATE [ value [ technology ] ];</tt><br>
<tt>VARIANT [ + | - ] name;</tt>
</dl>
<b>另请参阅</b> <a href=#105>VALUE</a>，<a href=#100>TECHNOLOGY</a>
<p>
默认情况下，所有 parts of the 原理图 are populated on the board (provided they have a 封装). However, sometimes 不同的 变体 of a design my require that some parts are not populated, 或 that they have 不同的 values 或 technologies than the 缺省的. The VARIANT 命令 allows you to 定义 which parts are actually populated in a 给定的 组装变体, and to give them 特定的 values and technologies.
<p>
<i>name</i> is the name of the variant. It is treated case-insensitive and must be enclosed in 单引号s if it 包含 blanks 或 '+' 或 '-'.
<p>
如果 <i>part_name</i> followed by the 关键字 <tt>POPULATE</tt> 或 <tt>NOPOPULATE</tt> is 给定的, a variant of the 给定的 <i>name</i> is 建立d for that part, in which it 将 be marked as either "populated" 或 "not populated".
<p>
零件 that are not populated in the 当前的组装变体 are indicated with an X drawn over their entire bounding rectangle in the 原理图. 在电路板图中 anything that is related to actually 放置 the part on the board (like placeplan, names, values etc.) is not drawn in such a case.
<p>
The 可选的 <i>value</i> and <i>technology</i> (which is only applicable in a 原理图) 可以用于 further refine the variant. A 值 may only be 给定的 if the part's 器件 has 它的 "用户 value" 参数 enabled. 如果 only the 技术（工艺） shall be specified without using a 不同的 值, an 空字串 (<tt>''</tt>) can be entered for 值.
<p>
A new variant can be 建立d by preceding <tt>name</tt> with a <tt>'+'</tt>. 如果 a variant with that 名称 already exists, nothing happens.
<p>
如果 variant 名称 is preceded with a <tt>'-'</tt>, the 给定的 variant 将 be deleted. 如果 <tt>name</tt> is <tt>'*'</tt>, 所有 变体 将 be deleted. 除非 this 命令 is used in a 脚本, a confirmation prompt 将 ask the 用户 whether this action should really be taken.
<p>
Giving only a 变体名称 将 switch the whole 工程 to that variant. This means that 所有 "populate" 标志s, values and technologies 将 appear as specified in that variant for each part. Using an 空字串 (<tt>''</tt>) here switches to the 缺省的 组装变体, which the same as if there were no 变体 at all. 请注意 当 loading a 绘图 it is 始终 in 它的 缺省的 state, with no 组装变体 所选的.
<p>
如果 used without any 参数, a dialog 将 open that allows you to manage 所有 组装变体s.
<p>
The name of the 当前的组装变体 can be displayed by using the <a href=#101>text 变量</a> <tt>&gt;ASSEMBLY_VARIANT</tt>.
<p>
    命令 ADD, 改变PACKAGE | TECHNOLOGY, REPLACE, UPDATE and VALUE 只能 be used if no 组装变体 is active.
<p>
The COPY 命令 不 copy 组装变体s.


<a name=107>
<h1>VIA</h1>
<dl>
<dt>
<b>功能</b>
<dd>
添加过孔 to a board.
<dt>
<b>语法</b>
<dd>
<tt>VIA ['signal_name'] [diameter] [shape] [layers] [flags] &#149;..</tt>
</dl>
<b>另请参阅</b> <a href=#98>SMD</a>，<a href=#36>CHANGE</a>，<a href=#46>DISPLAY</a>，<a href=#94>SET</a>，<a href=#75>PAD</a>，<a href=#136>设计规则</a>
<p>
当激活 VIA 命令时，过孔符号被附在鼠标光标上。按鼠标左键在当前位置放置一过孔。如果过孔被放置到已有的信号线上，则过孔被加入到该信号中。如果您试图连接不同的信号，EAGLE 将会询问您是否真的想要把他们连接到一起。
<h2>Signal name</h2>
<tt>signal_name</tt> 参数 is intended 主要用在读入生成的数据的脚本文件中。如果给定了 <tt>signal_name</tt>，所有 subsequent 过孔 将 be added to that 信号, and 将不会执行自动检查。<br>
<b>This feature should be used with great care because it could result in 短路，if a via is placed in a way that it 将 connect 属于不同信号的导线。请运行一次<a href=#47>设计规则检查</a> after using the VIA 命令 with the <tt>signal_name</tt> 参数!</b>
<h2>过孔直径</h2>
输入 a number 改变 the 过孔的直径 (in the 实际的 unit) and 值 remains in use for further 过孔. Via 直径最大可为 0.51602 inch (13.1 mm).
<p>
过孔的钻孔直径 is the same as the 直径 set for 焊盘. It can be changed with
<pre>
CHANGE 改变钻孔直径 &#149;
</pre>
<h2>Shape</h2>
过孔的形状可以为下列之一：
<p>
     Square<br>
     Round<br>
     Octagon
<p>
这些形状仅适用于外层（顶层和底层）。内层中的形状始终为 "round".
<p>
Vias 生成 钻孔符号s in the Drills layer and the 阻焊层 in the tStop/bStop layers.
<p>
Like the 直径, the via 形状 can be entered while the VIA 命令 is active, 或 it can be changed with the CHANGE 命令. The 形状 then remains valid for the next 过孔 and 焊盘.
<p>
请注意，实际的过孔形状和直径 将 be determined by the <a href=#136>设计规则</a> of the board the via is used in.
<h2>Layers</h2>
<tt>layers</tt> 参数定义了 the layers this via shall cover. The 语法 is <tt>from-to</tt>, where 'from' and 'to' are the layer numbers that shall be covered. 比如 <tt>2-7</tt> 将 建立 a via that goes from layer 2 to layer 7 (<tt>7-2</tt> 将 have the same meaning). 如果 that exact via is not available in the layer setup of the <a href=#136>设计规则</a>, the next longer via 将 be used (or an 错误消息 将 be issued in case no such via can be set).
<h2>Flags</h2>
以下 <i>flags</i> 可以用于控制过孔的外观：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>STOP</tt>  </td><td width=20><td>始终 生成 solder stop mask</td></tr>
</table>
<p>
默认情况下，a via with a 钻孔直径 that is 小于或等于 值 of the <a href=#136>设计规则</a> 参数 "Masks/Limit" 将 not have a solder stop mask. The above <tt>STOP</tt> 标志可以用于 force a solder stop mask for a via.


<a name=108>
<h1>WINDOW</h1>
<dl>
<dt>
<b>功能</b>
<dd>
缩放绘图。
<dt>
<b>语法</b>
<dd>
<tt>WINDOW;</tt><br>
<tt>WINDOW &#149;;</tt><br>
<tt>WINDOW &#149; &#149;;</tt><br>
<tt>WINDOW &#149; &#149; &#149;</tt><br>
<tt>WINDOW scale_factor</tt><br>
<tt>WINDOW FIT</tt><br>
<tt>WINDOW LAST</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Left&amp;Drag</mb> 定义了一个矩形窗口（shortcut for "<tt>&#149; &#149;;</tt>"）。
<dt>
<b>键盘</b>
<dd>
<tt>Alt+F2: WINDOW FIT </tt>   Fit 绘图 on the screen<br>
<tt>F2:     WINDOW;    </tt>   屏幕重绘<br>
<tt>F3:     WINDOW 2   </tt>   Zoom in by a factor of 2<br>
<tt>F4:     WINDOW 0.5 </tt>   Zoom out by a factor of 2<br>
<tt>F5:     WINDOW (@);</tt>   光标位置为新的中心（如果某个命令已激活）
</dl>
WINDOW 命令用于缩放绘图以及改变绘图在屏幕上的位置。该命令 can be used with up to 三次鼠标点击。如果 there are fewer, it must be terminated with a 分号.
<h2>刷新屏幕</h2>
如果您使用 WINDOW 命令跟着一个分号，EAGLE 重绘屏幕而不改变中心或 the scale. This is useful if 错误消息s cover part of the 绘图.
<h2>新的中心</h2>
WINDOW 命令 with one point 导致该点变成绘图的新的屏幕显示中心。The scaling of the 绘图 remains the same. 您也可以使用 the sliders of the working area to move the 绘图的可视区域。功能键 F5 causes the 当前位置 of the 光标 to be the 新的中心。
<h2>Corner points</h2>
The WINDOW 命令 with 两个 points 定义了 a 矩形 with the specified points at opposite corners。The rectangle expands to fill the screen providing a close-up view of the specified portion of the 绘图。
<h2>New center and zoom</h2>
您可以用 the WINDOW 命令 with 三个点。第一个点定义了绘图的新的中心 and the display becomes 或者更大或更小，依赖于 the ratios of the spacing between the 其它点。In order to zoom in, the 距离 between point 1 and point 3 should be 大于 the 距离 between point 1 and 2; to zoom out place point 3 在点 1 和 2 之间。
<h2>放大、缩小</h2>
<pre>
WINDOW 2;
</pre>
使元素的显示放大二倍。
<pre>
WINDOW 0.5;
</pre>
Reduces the size of the 元素s by a factor of 两个.
<p>
您可以指定一个整数或实数作为参数 to the WINDOW 命令 to scale the view of the 绘图 by the amount entered. The center of the window remains the same.
<h2>The whole 绘图</h2>
<pre>
WINDOW FIT;
</pre>
fits the 整个绘图 on the screen.
<h2>返回到先前的窗口</h2>
<pre>
WINDOW LAST;
</pre>
切换回前一个选择的窗口。A window selection is stored by 每个 WINDOW 命令，except for zoom-only WINDOW 命令s and modifications of the window selection with the mouse.
<h2>Very large zoom factors</h2>
默认情况下，the 最大的缩放因子 is limited in such a way that an area of 1mm（约 40mil） in 直径 将 be shown using the 整个编辑器窗口。如果您需要 to zoom in further, 您可以取消选中“选项/用户界面/限制缩放因子” and 将 then be able to 放大所有 the way until the 最细的 editor grid can be seen.
<p>
当 zooming very far into a 绘图，下面的 things may happen:
<ul>
<li>Texts that are not using the vector 字体 may not be shown if they are 大于 the 编辑器窗口.
<li>Circles and Arcs are approximated and therefore may not appear at their exact 位置 (尤其是 if they have a very small width).
<li>Whether 或 not the 最细的 grid 将 be 可见的 当 zooming 所有 the way in 依赖于您的分辨率，the 编辑器窗口 size and 值 of  "Options/Set/Misc/Min. 可见的 栅格尺寸".
</ul>
<h2>参数别名</h2>
参数别名 可以用于定义 certain 参数 设置 to the WINDOW 命令，which can later be referenced by a 给定的 name. The 别名 can also be accessed by clicking on the "WINDOW Select" 按钮 and holding the 鼠标按键 pressed until the list pops up. A right click on the 按钮 also pops up the list.
<p>
The 语法 to 处理 这些 别名 is:
<dl>
<dt>
<tt>WINDOW = <i>name</i> <i>参数</i></tt>
<dd>
定义 alias with the 给定的 <i>name</i> to expand to the 给定的 <i>参数</i>。<i>name</i> may consist of any number of 字母, digits and underlines, and is treated case insensitive. It must begin with a letter 或 underline and may not be one of the 选项 关键字.
<dt>
<tt>WINDOW = <i>name</i> @</tt>
<dd>
定义 alias with the 给定的 <i>name</i> to expand to the 当前窗口 selection.
<dt>
<tt>WINDOW = ?</tt>
<dd>
Asks the 用户 to enter a name for defining an alias for the 当前窗口 设置.
<dt>
<tt>WINDOW = <i>name</i></tt>
<dd>
Allows the 用户 to 选择 a window that 将 be defined as an alias under the 给定的 <i>name</i>.
<dt>
<tt>WINDOW = <i>name</i>;</tt>
<dd>
Deletes the alias with the 给定的 <i>name</i>.
<dt>
<tt>WINDOW <i>name</i></tt>
<dd>
Expands the alias with the 给定的 <i>name</i> and executes the WINDOW 命令 with the resulting set of 参数. The <i>name</i> may be abbreviated and there may be 其它参数 before and after the alias (even other 别名). 请注意 in case <i>name</i> is an abbreviation, 别名 have precedence over 其它参数名称s of the 命令。
</dl>
例如：
<p>
<tt>WINDOW = MyWindow (0 0) (4 3);</tt>
<p>
定义 alias "MyWindow" which, 当 used as in 
<p>
<tt>WINDOW myw</tt>
<p>
将 zoom to the 给定的窗口区域。Note the abbreviated use of the alias and the case insensitivity.


<a name=109>
<h1>WIRE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Adds wires (tracks) to a 绘图.
<dt>
<b>语法</b>
<dd>
<tt>WIRE ['signal_name'] [width] &#149; &#149;..</tt><br>
<tt>WIRE ['signal_name'] [width] [ROUND | FLAT] &#149; [curve | @radius] &#149;..</tt>
<dt>
<b>鼠标按键</b>
<dd>
<mb>Center</mb> 选择层。<br>
<mb>Right</mb> 改变导线弯折样式（见 <a href=#94>SET Wire_Bend</a>）。<br>
<mb>Shift+Right</mb> reverses the direction of switching 弯折样式。<br>
<mb>Ctrl+Left</mb> 当 starting a wire snaps it to the next 现有的 wire 端点.<br>
<mb>Ctrl+Right</mb> toggles between 相应的 弯折样式s.<br>
<mb>Ctrl+Left</mb> 当 放置 a wire 端点 定义了 arc 半径.
</dl>
<b>另请参阅</b> <a href=#68>MITER</a>，<a href=#96>SIGNAL</a>，<a href=#91>ROUTE</a>，<a href=#36>CHANGE</a>，<a href=#71>NET</a>，<a href=#35>BUS</a>，<a href=#43>DELETE</a>，<a href=#89>RIPUP</a>，<a href=#30>ARC</a>
<p>
WIRE 命令用于 add wires (tracks) to a 绘图. The wire begins at the 第一个点 specified and runs to the second. Additional points draw additional wire 段s. Two mouse clicks at the same 位置 finish the wire and a new one can be started at the 位置 of the next mouse click.
<p>
依赖于当前激活的 wire bend, one 或 两个 wire 段s 将 be drawn 在每两个点之间。The wire bend 定义了角度 between the 段s and can be changed with the 鼠标右键 (holding the Shift 键 down while 点击鼠标右键 reverses the direction in which the 弯折样式s are gone through, and the Ctrl 键 makes it toggle between 相应的 弯折样式s).
<p>
按鼠标中键 brings up a 弹出菜单 from which you may 选择 the layer into which the wire 将 be drawn.
<p>
特殊关键字 <tt>ROUND</tt> 和 <tt>FLAT</tt>, as well as the <i>curve</i> 参数, 可以用于绘制圆弧（见下文）。
<p>
Starting a WIRE with the Ctrl 键 pressed 捕获起点 of the new wire to the 坐标 of the 接近现有的 wire. This is 特别有用 if the 现有的 wire is off grid. It also adjusts the 当前的 width, layer and style to 那些 of the 现有的 wire.
如果 当前的弯折样式 is 7 ("Freehand"），the new wire 将 form a smooth continuation of the 现有的 wire.
<h2>信号名称</h2>
<tt>signal_name</tt> 参数 is intended mainly to be used in 脚本文件 that 读入生成的数据，如果给定了 <tt>signal_name</tt>，所有 subsequent wires 将添加到该信号 and no 自动检查 将 be performed.<br>
<b>This feature should be used with great care because it could result in 短路，if a wire is placed in a way that it 将连接不同的信号。请运行 a <a href=#47>设计规则检查</a> after using the WIRE 命令 with the <tt>signal_name</tt> 参数！</b>
<h2>Wire Width</h2>
输入 a number after activating the WIRE 命令改变 the width of the wire (in the present unit) which can be up to 0.51602 inch (13.1 mm).
<p>
线宽可以在任何时候用命令
<pre>
CHANGE WIDTH width &#149;
</pre>
改变。
<h2>线型</h2>
Wires can have one of the 以下 <i>styles</i>:
<ul>
<li>Continuous
<li>LongDash
<li>ShortDash
<li>DashDot
</ul>
The wire style can be changed with the <a href=#36>CHANGE</a> 命令。
<p>
请注意 the DRC and 自动布线器 将 始终 treat wires as "Continuous", 即使 their style is 不同的. Wire styles are mainly for electrical and mechanical 绘图s and should not be used on 信号层s. It is an explicit DRC error to use a non-continuous wire as part of a 信号 that is 连接ed 到 any 焊盘.
<h2>Signals in Top, Bottom, and Route Layers</h2>
Wires (tracks) in the layers Top, Bottom, and ROUTE2...15 are 被看作 信号. 如果您 draw a wire in either of 这些 layers starting from an 现有的 信号，那么所有 of the 段 of this wire belong to that 信号（仅当 the center of the wire is placed exactly onto the center of the 现有的 wire 或 pad）。如果您 finish this 绘图 操作 with a wire 段 连接ed 到 a 不同的 信号, then EAGLE 将 ask you if 您想要 connect the 两个 信号.
<p>
请注意 EAGLE treats each wire 段 as a single 对象 (e.g. 当 deleting a wire).
<p>
当 the WIRE 命令 is active the 鼠标中键 可以用于 改变the layer on which the wire is drawn.
<p>
Do not use the WIRE 命令 for 网络, 总线, and 鼠线.
See <a href=#71>NET</a>, <a href=#35>BUS</a> and <a href=#96>SIGNAL</a>.
<h2>绘制圆弧</h2>
线与圆弧基本上是相同的对象，所以您可以用 <a href=#30>ARC</a> 命令绘制圆弧，或者用 WIRE 命令添加必要的参数来绘制圆弧。To make a wire an arc it needs either the <i>curve</i> 参数, which 定义了 the "curvature" of the arc, 或 the <i>@radius</i> 参数, which 定义了 the 半径 of the arc (note the <tt>'@'</tt>, which is necessary to be able to tell apart <i>curve</i> 及 <i>radius</i>）。
<p>
The valid 范围 for <i>curve</i> 为 <tt>]-360</tt>..<tt>+360[</tt> (without the limits +-360），and 它的 值 means what part of a 完整的 circle the arc 包含. A 值 of <tt>90</tt>, 比如, 会导致 a <tt>90&deg;</tt> arc, while <tt>180</tt> 将 give you a semicircle. Full circles cannot be 建立d this way (for this use the <a href=#37>CIRCLE</a> 命令）。正的值 for <i>curve</i> mean that the arc is drawn in a mathematically positive sense (i.e. 逆时针）。如果 <i>curve</i> 为 <tt>0</tt>，圆弧为一直线（"no curvature"），which is actually a wire. 请注意 以便 distinguish the <i>curve</i> 参数 from the <i>width</i> 参数, it 始终 has to be 给定的 with a sign (<tt>'+'</tt> 或 <tt>'-'</tt>），即使 it 为positive 值.<br>
<p>
As 例子, 命令
<pre>
WIRE (0 0) +180 (0 10);
</pre>
将 draw a semicircle from the point (0 0) to (0 10），in 逆时针 direction.
<p>
如果给定了 <i>radius</i>，the arc 将 have that 半径. Just like the <i>curve</i> 参数, <i>radius</i> 也必须 have a sign 以便 determine the arcs 方向。例如, 命令
<pre>
WIRE (0 0) @+100 (0 200);
</pre>
将 draw a semicircle from the point (0 0) to (0 200) (with a 半径 of 100），in 逆时针方向。请注意，如果端点 is more than twice the 半径 away from the 起始点，将绘制一条直线将。
<p>
The arc 半径 can also be defined by 放置 the wire 端点 with the <tt>Ctrl</tt> 键 pressed (typically at the center of the circle on which the arc shall lie). In that case the point is not taken as an 实际的 端点, but is rather used to set the 半径 of an arc. 您可以移动光标 around and place an arc with the 给定的 半径 (the 鼠标右键 together with <tt>Ctrl</tt> 将 toggle the arc's 方向). 如果您移动光标 more than twice the 半径 away from the start point, a straight line 将 be drawn.
<p>
为了能够用 WIRE 命令绘制任意圆弧（which is 尤其是 important for 生成d 脚本文件），关键字 <tt>ROUND</tt> 和 <tt>FLAT</tt> are also allowed in the WIRE 命令。请注意，though, that 这些 apply only to 实际的圆弧（直线 wires 始终 have round endings）。默认情况下，用 WIRE 命令建立的圆弧 have round endings。


<a name=110>
<h1>WRITE</h1>
<dl>
<dt>
<b>功能</b>
<dd>
保存当前的绘图或元件库。
<dt>
<b>语法</b>
<dd>
<tt>WRITE;</tt><br>
<tt>WRITE name</tt><br>
<tt>WRITE @name</tt>
</dl>
WRITE 命令用于保存绘图或元件库。如果输入了 'name'，EAGLE 将保存 file under the new name.
<p>
如果文件要保存在另一个目录，文件名也可以带路径名输入。如果没有给定路径名，则文件保存在<a href=#14>工程目录</a>。
<p>
如果 new name is preceded with a <tt>@</tt>, the name of the 载入的绘图 将 also be changed accordingly. The 相应的 PCB 图/原理图 将 then also be saved 自动地 under this name and the UNDO buffer 将 be cleared.
<p>
如果 WRITE is 所选的 from the 菜单, a popup window 将 appear asking for the name to use (当前的绘图 name is 缺省的). This name may be edited and accepted by clicking the OK 按钮. 按 ESCAPE 键 或 clicking the CANCEL 按钮 cancels the WRITE 命令。
<p>
To assure 一致性 for <a href=#362>正向&amp;反向编序</a> between PCB图和原理图 绘图s, the WRITE 命令 has the 以下 additional functionality:
<ul>
<li>当 a PCB 图/原理图 is saved under the 相同名称, the 相应的 原理图/board is also saved if it has been modified <li>当 a PCB 图/原理图 is saved under a 不同的 name, the 用户 将 be asked whether he also wants to save the 原理图/board under that 不同的 name
<li>saving a 绘图 under a 不同的 name 不 clear the "modified" 标志
</ul>


<a name=111>
<h1>生成 Output</h1>
<ul>
<li><a href=#112>打印</a>
<li><a href=#116>CAM 处理器</a>
<li><a href=#133>Outlines data</a>
</ul>


<a name=112>
<h1>打印</h1>
打印到系统打印机的参数可以通过以下三个对话框进行修改：
<ul>
<li><a href=#113>打印绘图</a>
<li><a href=#114>打印文字</a>
<li><a href=#115>打印机页面设置</a>
</ul>
<p>
<b>另请参阅</b> <a href=#81>PRINT</a>


<a name=113>
<h1>打印绘图</h1>
如果您输入 <a href=#81>PRINT</a> 命令 without a terminating <tt>';'</tt>, 或 选择 <b>Print</b> 从 <a href=#13>右键菜单</a> of a 绘图的图标 in the <a href=#12>控制面板</a>, you 将 be presented a dialog with the 以下选项：
<h2>纸张</h2>
Selects which paper format to print on.
<h2>Orientation</h2>
Selects the paper 方向.
<h2>预览</h2>
开启/关闭打印预览。
<h2>Mirror</h2>
Mirrors the 输出.
<h2>旋转</h2>
旋转90&deg;输出.
<h2>上下颠倒</h2>
旋转绘图 180&deg;。Together with <b>Rotate</b> the 绘图 is rotated by a total of 270&deg;.
<h2>Black</h2>
Ignores the color 设置 of the layers and 打印 everything in black.
<h2>实心Solid</h2>
Ignores the fill style 设置 of the layers and 打印 everything in solid.
<h2>比例系数</h2>
Scales the 绘图 by the 给定的 值.
<h2>页数限制</h2>
定义最大页数您想the 输出 to use. In case the 绘图 不 fit on the 给定的页数，实际的缩放因子 将 be 减小d until it fits。<tt>0</tt>的默认值意味着没有限制。
<h2>全部</h2>
将打印原理图的所有图纸（这是缺省的 当 选择 <b>Print</b> from the <a href=#13>右键菜单</a> of a 原理图 绘图's 图标).
<h2>From...to</h2>
仅打印给定的图纸范围。
<h2>This</h2>
仅打印当前正在编辑的图纸（this is the 缺省的 当 using the <a href=#81>PRINT</a> 命令 from a 原理图编辑器窗口).
<h2>打印机...</h2>
Invokes the 系统打印机 dialog, which enables you to choose which 打印机 to use and to set 打印机 specific 参数.
<h2>PDF...</h2>
建立 a PDF (Portable Document Format) 文件 with the 给定的 print 设置.
<p>
其余选项用于<a href=#115>页面设置</a>。


<a name=114>
<h1>打印文本</h1>
如果您 选择 <b>Print</b> from the <a href=#13>右键菜单</a> of a 文本文件的图标 in the <a href=#12>控制面板</a>, 或 from the <b>文件</b> 菜单 of the <a href=#26>文本编辑器</a>, you 将 be presented a dialog with the 以下选项：
<h2>Wrap long lines</h2>
Enables wrapping lines that are too long to 适合页面宽度。
<h2>打印机...</h2>
Invokes the 系统打印机 dialog, which enables you to choose which 打印机 to use and to set 打印机 specific 参数.
<h2>PDF...</h2>
建立s a PDF (Portable Document Format) file with the 给定的打印设置。
<p>
其余选项用于<a href=#115>页面设置</a>。


<a name=115>
<h1>打印机页面设置</h1>
打印对话框提供了多个选项 that are 用于定义 how a 绘图 或文字 shall be placed on the paper.
<h2>边界</h2>
定义 left, top, right and bottom borders. The values are either in millimeters 或 inches, 依赖于 which unit results in fewer decimals.
<p>
缺省的边界值 are taken from the 打印机驱动，and 定义 the 最大的绘图区域您的 特定的 打印机 can 处理。您可以在这里输入较小的值，但您的打印机硬件 may 或 may not 能够打印 arbitrarily close to the paper edges.
<p>
After changing the 打印机 new hardware 最小的s may apply and 您的边界值 may be 自动地 enlarged as necessary to comply with the 新的打印机。请注意 the values 将 not be decreased 自动地 if a new 打印机 将 allow smaller values. To get the 最小的 possible 边界值 您可以输入 <tt>0</tt> in each field, which 将 then be limited to the 硬件 最小的.
<h2>Calibrate</h2>
如果 您想要 use 您的 打印机 to produce production layout 绘图s, you may have to 校准您的打印机 to achieve an exact 1:1 reproduction of 您的 layout.
<p>
值 in the <b>X</b> field is the 校准因子 to use in the print head direction, while 值 in the <b>Y</b> field 用于校准 the paper feed direction.
<p>
<b>重要注意事项：当 producing production layout 绘图s with 您的打印机, 始终 check the 最终打印结果 for correct measurements!</b>
<p>
默认值s of <tt>1</tt> assume that the 打印机 produces exact measurements in both directions.
<h2>对齐</h2>
定义绘图的数值和水平对齐 on the paper.
<h2>标题</h2>
激活 the printing of a caption line, 包含时间和日期 of the print as well as the file name.
<p>
如果 绘图 is mirrored, the word "mirrored" 将 appear in the caption, and if the 比例系数 is not <tt>1.0</tt> it 将 be added as <b>f=...</b> (the 比例系数 is 给定的 with 4 十进制 digits, so 即使 <b>f=1.0000</b> appears in the caption the 比例系数 将 not be <i>exactly</i> <tt>1.0</tt>).


<a name=116>
<h1>CAM 处理器</h1>
CAM 处理器允许您输出 any 组合 of layers to a 设备或文件。
<p>
以下帮助主题 lead you through the necessary steps from 选择 a 数据文件 to 配置输出设备：
<ul>
<li><a href=#117>选择数据文件文件</a>
<li><a href=#119>选择输出设备类型</a>
<li><a href=#130>选择输出文件</a>
<li><a href=#132>选择 the plot layers</a>
<li><a href=#120>调整设备参数</a>
<li><a href=#131>Adjust the 标志选项s</a>
</ul>
CAM 处理器允许您to combine several sets of 参数设置 to form a <a href=#118>CAM 处理器作业</a>，which 可以用于 produce a 完整的 set of 输出文件 with a single click of a 按钮.
<p>
<b>另请参阅</b> <a href=#112>打印至系统打印机</a>


<a name=117>
<h1>Main CAM Menu</h1>
<i>Main CAM Menu</i> is where you 选择 which file to process， edit drill rack and aperture wheel 文件，载入或保存作业文件。
<h2>文件</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>打开           </td><td width=20><td>Board...  open a board file for processing</td></tr>
<tr><td>               </td><td width=20><td>Drill rack...  open a drill rack file for editing</td></tr>
<tr><td>               </td><td width=20><td>Wheel...  open an aperture wheel file for editing</td></tr>
<tr><td>               </td><td width=20><td>Job...  切换到 an 其它job (or 建立 a new one)</td></tr>
<tr><td>保存作业...    </td><td width=20><td>保存当前作业</td></tr>
<tr><td>关闭           </td><td width=20><td>关闭 CAM 处理器窗口</td></tr>
<tr><td>退出           </td><td width=20><td>退出程序</td></tr>
</table>
<h2>Layer</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Deselect 所有   </td><td width=20><td>deselect 所有层</td></tr>
<tr><td>显示所选的      </td><td width=20><td>仅显示所选层</td></tr>
<tr><td>显示全部        </td><td width=20><td>显示所有层</td></tr>
</table>
<h2>窗口</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>控制面板         </td><td width=20><td>切换到控制面板</td></tr>
<tr><td>1 原理图 - ...     </td><td width=20><td>切换到 1 号窗口</td></tr>
<tr><td>2 PCB 图 - ...         </td><td width=20><td>切换到 2 号窗口</td></tr>
</table>
<h2>帮助</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>常规性的帮助   </td><td width=20><td>打开 a general 帮助页</td></tr>
<tr><td>目录       </td><td width=20><td>打开帮助目录</td></tr>
<tr><td>CAM 处理器  </td><td width=20><td>显示 帮助 for the CAM 处理器</td></tr>
<tr><td>Job 帮助       </td><td width=20><td>显示 帮助 about the Job mechanism</td></tr>
<tr><td>Device 帮助    </td><td width=20><td>显示 帮助 about 输出 devices</td></tr>
</table>


<a name=118>
<h1>CAM 处理器作业</h1>
A CAM 处理器 <i>Job</i> 包含 several <i>Sections</i>, each of which 定义了 a 完整的 set of CAM 处理器参数 and layer selections.
<p>
A typical CAM 处理器 job could 例如 have 两个 sections, one that produces photoplotter data for the Top layer, and another that produces the data for the bottom layer.
<h2>Section</h2>
The <i>Section</i> selector shows the 当前激活的 job section. By 按 按钮 您可以 选择 any of the sections you have defined previously with the <i>Add</i> 按钮.
<h2>Prompt</h2>
如果您 enter a text in this field, the CAM 处理器 会提示您 with this message before processing that 特定的 job section. 例如 you might want to 改变the paper in 您的 pen 绘图仪 for each plot, so the message could be "Please 改变paper!". Each job section can have 它自己的提示消息，and 如果没有 message the section 将 be processed immediately.
<h2>Add</h2>
Click on the <i>Add</i> 按钮 to add a new section to the job. You 将 be asked for the name of that new job section. The new job section 将 be 建立d with 所有 参数 set to the values 当前 shown in the 菜单.<br>
请注意如果您想要建立一个新的 job section, you should <b>第一个 add</b> that new section and <b>then modify</b> the 参数. Otherwise, 如果您 第一个 modify the 参数 of the current section and then add a new section, you 将 be prompted to confirm whether the modifications to the 当前的section shall be saved 或 not.
<h2>Del</h2>
Use the <i>Del</i> 按钮 to delete the 当前的job section. You 将 be prompted to confirm whether you really want to delete that section.
<h2>Process Section</h2>
The <i>Process Section</i> 按钮 processes the 当前的 job section, as indicated in the <i>Section</i> selector.
<h2>Process Job</h2>
The <i>Process Job</i> 按钮 processes the entire job by processing each section in turn, starting with the 第一个 section. What happens is the same as 如果您 将 选择 每个 single section with the <i>Section</i> selector and 按 the <i>Process Section</i> 按钮 for each section - just a lot more convenient!


<a name=119>
<h1>Output Device</h1>
The <i>Output Device</i> 定义了 the kind of 输出 the CAM 处理器 is to produce. 您可以 选择 从 various device types, like photo 绘图仪s, drill stations etc.
<h2>Device</h2>
Clicking on the 按钮 of the Device selector opens a list of 所有 available 可用的输出设备。
<h2>Scale</h2>
On devices that can scale the 输出 您可以输入 a scaling factor in this field。大于 <tt>1</tt> 的值 将 produce an enlarged output，小于 <tt>1</tt> 的值 将 shrink the 输出.
<p>
您可以 limit the size of the 输出 to a 给定的 页数 by 输入 a negative number in the Scale field. In that case the 缺省的 比例系数 将 be 1.0 and 将 be decreased until the 绘图 just fits on the 给定的 number of pages. 例如, 输入 "-2" into this field 将 produce a 绘图 that does not exceed 两个 pages. Please 请注意 for this mechanism to work you 将 have to make sure that the page width and height is set 依照 您的 输出 device. This setting can be adjusted in the Width and Height fields 或 by editing the file eagle.def.
<h2>文件</h2>
您可以 either 输入名称 of the <a href=#130>输出文件</a> directly into this field, 或 click on the File 按钮 to open a dialog for the 定义 of the 输出文件。<br> 
如果 您想要 derive the 输出 文件名 从 the 输入 数据文件, you can enter a partial filename (至少 an extension, e.g. <tt>.gbr</tt>），这种情况下， the rest of the filename 将 be taken 从 the 输入 data filename.
<h2>Wheel</h2>
您可以 either 输入名称 of the <a href=#121>aperture wheel 文件</a> directly into this field, 或 click on the Wheel 按钮 to open a 文件对话框 to 选择 from.<br>
如果 您想要 derive the 输出 文件名 从 the 输入 数据文件, you can enter a partial filename (至少 an extension, e.g. <tt>.whl</tt>），这种情况下， the rest of the filename 将 be taken 从 the 输入 data filename.
<h2>Rack</h2>
您可以 either 输入名称 of the <a href=#124>drill rack 文件</a> directly into this field, 或 click on the Rack 按钮 to open a 文件对话框 to 选择 from.<br>
如果 您想要 derive the 输出 文件名 从 the 输入 数据文件, you can enter a partial filename (至少 an extension, e.g. <tt>.drl</tt>），这种情况下， the rest of the filename 将 be taken from the 输入 data filename. Some drill devices (like EXCELLON, 比如) can 自动地 生成 the necessary drill 定义, 这种情况下， this field is not present.


<a name=120>
<h1>Device 参数</h1>
依赖于 the type of <a href=#119>输出 device</a> you have 所选的, there are several device specific 参数 that allow you to adjust the 输出 to 您的 needs:
<ul>
<li><a href=#121>Aperture Wheel 文件</a>
<li><a href=#122>Aperture Emulation</a>
<li><a href=#123>Aperture Tolerances</a>
<li><a href=#124>Drill Rack 文件</a>
<li><a href=#125>Drill Tolerances</a>
<li><a href=#126>Offset</a>
<li><a href=#127>Page Size</a>
<li><a href=#128>Pen Data</a>
</ul>


<a name=121>
<h1>Aperture Wheel 文件</h1>
A photoplotter usually needs to know which <i>apertures</i> are assigned to the codes used in the 输出文件。 这些 assignments are defined in an <i>Aperture Wheel 文件</i>.
<h2>例子</h2>
<pre>
D010    round     0.004
D040    square    0.004
D100    rectangle 0.060 x 0.075
D104    oval      0.030 x 0.090
D110    draw      0.004
</pre>
请注意 the file may 包含 several apertures that share the same D-code, as long as 所有 of 这些 have a type from draw 或 round, and have the same size.
This 可以用于 map apertures that effectively result in the same 绘图 to a common D-code.


<a name=122>
<h1>Aperture Emulation</h1>
如果 item "Apertures" is 所选的, apertures not available are emulated with smaller apertures. 如果 this item is not 所选的, no aperture emulation 将 be done at all.
<p>
Please 请注意 aperture emulation can cause very long plot times (costs!).


<a name=123>
<h1>Aperture Tolerances</h1>
如果您 enter tolerances for draw and/or flash apertures the CAM 处理器 uses apertures within the tolerances, provided the aperture with the exact 值 is not available.
<p>
Tolerances are entered in percent.
<p>
<b>Please be aware that 您的设计规则 might not be kept 当 allowing tolerances!</b>


<a name=124>
<h1>Drill Rack 文件</h1>
如果 a drill station driver 无法自动地 生成所需的钻孔定义，它需要知道 which <i>钻孔直径s</i> are assigned to the codes used in the 输出文件。这些 assignments are 定义在 a <i>Drill Rack 文件</i>.
<p>
该文件可以在名为 drillcfg.ulp 的用户语言程序的帮助下生成，that is 存储在您的 EAGLE 的 ULP 目录中。用 <a href=#92>RUN</a> 命令启动它。
<h2>例</h2>
<pre>
T01   0.010
T02   0.016
T03   0.032
T04   0.040
T05   0.050
T06   0.070
</pre>


<a name=125>
<h1>Drill Tolerances</h1>
如果您 enter tolerances for drills the CAM 处理器 uses drill 直径s within the tolerances, provided the drill with the exact 值 is not available.
<p>
Tolerances are entered in percent.


<a name=126>
<h1>偏移</h1>
x 和 y 方向上的偏移（英寸，十进制数）。
<p>
可以用于 定位 the 绘图仪的原点 at the lower left corner.


<a name=127>
<h1>可打印区域</h1>
<h2>Height</h2>
<tt>Y</tt> 方向上的可打印区域（英寸）。
<h2>Width</h2>
<tt>X</tt> 方向上的可打印区域（英寸）。
<p>
请注意，CAM 处理器把一个绘图分成几个部分 if the rectangle which includes 所有 对象 of the file (even the ones not printed) 不 fit into the 可打印区域.


<a name=128>
<h1>Pen Data</h1>
<h2>Diameter</h2>
Pen 直径 in mm. Is used for the calculation of lines 当 areas have to be filled.
<h2>Velocity</h2>
Pen velocity in cm/s for pen 绘图仪s which can be adjusted to 不同的速度。
<p>
The 绘图仪 默认的速度 is 所选的 with 值 0.


<a name=129>
<h1>定义您自己的设备驱动</h1>
The drivers for 输出 devices are defined in the text file eagle.def. There you find details on 如何 定义 您自己的 driver. It is advisable to copy the whole section of an 现有的 driver of the same device category and to edit the 参数 which are 不同的.
<p>
Please use a <a href=#26>文本编辑器</a> which 不 place control 字符 into the 文件。


<a name=130>
<h1>输出文件</h1>
<i>输出文件</i> 包含 the data produced by the CAM 处理器.
<p>
常用的文件（扩展）名如下：
<pre>
-------------------------------------------------------
File   Layers               Meaning
-------------------------------------------------------
*.cmp  Top, Via, Pad        元件层
*.ly2  Route2, Via, Pad     内部 信号层
*.ly3  Route3, Via, Pad     内部 信号层
...                         ...
*.sol  Bot, Via, Pad        Solder side
*.plc  tPl, Dim, tName,     Silkscreen comp. side
*.pls  bPl, Dim, bName,     Silkscreen solder side
*.stc  tStop                Solder stop mask comp. side
*.sts  bStop                Solder stop mask sold. side
*.drd  Drills, Holes        Drill data for NC drill st.
-------------------------------------------------------
</pre>
<h2>占位符</h2>
The 输出 文件名 can either 被直接输入，或 can be 动态ally composed using <i>占位符</i>. A 占位符 包含 a 百分比 字符 (<tt>'%'</tt>) followed by a letter. The 以下 占位符 are defined:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>%D{xxx}</tt></td><td width=20><td>a string that is inserted only into the 数据文件 name</td></tr>
<tr><td><tt>%E</tt>     </td><td width=20><td>载入的文件的扩展名 (without the <tt>'.'</tt>）</td></tr>
<tr><td><tt>%H</tt>     </td><td width=20><td>the 用户's <a href=#14>home directory</a></td></tr>
<tr><td><tt>%I{xxx}</tt></td><td width=20><td>a string that is inserted only into the info file name</td></tr>
<tr><td><tt>%L</tt>     </td><td width=20><td>the layer 范围 for blind&amp;buried 过孔 （见下文）</td></tr>
<tr><td><tt>%N</tt>     </td><td width=20><td>载入的 文件的 name (without path and extension)</td></tr>
<tr><td><tt>%P</tt>     </td><td width=20><td>载入的 文件的 directory path (without file name)</td></tr>
<tr><td><tt>%%</tt>     </td><td width=20><td>the 字符 <tt>'%'</tt></td></tr>
</table>
<p>
例如, the 输出文件 定义
<p>
<tt>%N.cmp%I{.info}</tt>
<p>
将 建立 <tt><i>boardname</i>.cmp</tt> for the 数据文件 and <tt><i>boardname</i>.cmp.info</tt> for the info file (in case the 所选的 输出 device 产生 an info file).
<h2>Drill data with blind&amp;buried 过孔</h2> 
如果 board 包含 blind 或 buried 过孔, the CAM 处理器 产生 a 单独的钻孔文件 for each via 长度 that is actually used 在电路板图中。文件名 are built by adding the number of the start and end layer to the base file name,比如
<pre>
<i>boardname</i>.drl.0104
</pre>
which 将 be the drill file for the layer stack 1-4. 如果 您想要 have the layer numbers at a 不同的位置，您可以使用占位符 <tt>%L</tt>,比如
<pre>
%N.%L.drl
</pre>
which 会导致
<pre>
<i>boardname</i>.0104.drl
</pre>
钻孔信息文件名 is 始终 生成d without layer numbers, and any '.' before the <tt>%L</tt> 将被舍弃。Any previously 现有的 文件 that 将 match the 给定的 钻孔文件名称 模式, but 将 not result from the 当前的job, 将 be deleted before 生成 any new 文件. There 将 be one 钻孔信息文件 per job, which 包含 (amoung 其它信息) a list of 所有 生成d drill 数据文件.


<a name=131>
<h1>标志选项s</h1>
<h2>Mirror</h2>
Mirror 输出. This 选项 normally causes negative 坐标, therefore it should be used 仅当 "pos. Coord." is 所选的, too.
<h2>Rotate</h2>
旋转 绘图 by 90 度. This 选项 normally causes negative 坐标, therefore it should be used 仅当 "pos. Coord." is 所选的, too.
<h2>Upside down</h2>
旋转绘图 180 度。Together with Rotate, the 绘图 is rotated by a total of 270 度。This 选项 normally causes negative 坐标，因此它应该 be used 仅当 "pos. Coord." is 所选的, too.
<h2>pos. Coord</h2>
Offsets the 输出 以便 negative 坐标 are eliminated and the 绘图 is referenced to the 原点 of the 输出 device. This is advisable for devices which 生成 错误消息s if negative 坐标 are detected.
<h2>Quickplot</h2>
Draft 输出 which shows only the outlines of 对象 (subject to availability on the 所选的输出设备）。
<h2>Optimize</h2>
激活 the optimization of the 绘图 sequence for 绘图仪s.
<h2>填充焊盘</h2>
Pads 将 be filled. This function can be properly executed only with generic devices, like PostScript.<br>
如果 该选项 is not 所选的, the drill holes of 焊盘 将 be 可见的 on the 输出.


<a name=132>
<h1>层与颜色</h1>
Select the layer 组合 by clicking the check boxes in the <i>Layer</i> list.
<p>
如果您选择了支持彩色的<a href=#119>输出设备</a>，您可以在 <i>Color</i> 字段中为每个层输入颜色号码。
<p>
The 以下 layers and <a href=#130>输出文件 names</a> 通常用于建立 the output:
<pre>
-------------------------------------------------------
File   Layers               Meaning
-------------------------------------------------------
*.cmp  Top, Via, Pad        元件层
*.ly2  Route2, Via, Pad     内部 信号层
*.ly3  Route3, Via, Pad     内部 信号层
...                         ...
*.sol  Bot, Via, Pad        Solder side
*.plc  tPl, Dim, tName,     Silkscreen comp. side
*.pls  bPl, Dim, bName,     Silkscreen solder side
*.stc  tStop                Solder stop mask comp. side
*.sts  bStop                Solder stop mask sold. side
*.drd  Drills, Holes        Drill data for NC drill st.
-------------------------------------------------------
</pre>


<a name=133>
<h1>Outlines data</h1>
EAGLE can produce outlines data which can be used for milling prototype PCB 图.
<p>
用户语言程序 <i>outlines.ulp</i> implements the entire process necessary 进行。 The 以下为详细的描述 of what exactlproduce outlines data with EAGLE.
<h2>Preparing the board</h2>
Outlines data is produced by defining a <a href=#79>POLYGON</a> in the layer for which the outlines shall be 已计算的。这个具有以下属性：
<ul>
<li>它的名称必须为 _OUTLINES_
<li>it must be the <b>only</b> 对象 in the 信号 named _OUTLINES_
<li>它的 <i>Rank</i> 必须为 <tt>'6'</tt>
<li>它的 <i>Width</i> must be the same as the 直径 of the milling tool
<li>it must be large entire board area
</ul>
如果 a 多边形 with 这些属性 is present in 您的 board, the <a href=#83>RATSNEST</a> 命令 将 calculate it in such a way that 它的 <i>contours</i> correspond to the lines that have to be drawn by the milling tool to isolate the various 信号 from each other. The <i>fillings</i> of the 已计算的 多边what has to be milled out if 您想要 completely remove 所有 superfluous copper areas.
<h2>Extracting the data</h2>
The outlines data can be extracted from the board through a <a href=#141>用户语言程序</a>。The <i>outlines.ulp</i> 程序 that comes with EAGLE implements this entire process. 如果 您想要 write 您自己的 ULP 您可以 use <i>outlines.ulp</i> as a starting point. See the 帮助页 for <a href=#203>UL_POLYGON</a> for details 关于如何 retrieve the outlines data from a 多边形 对象.
<h2>Milling tool 直径</h2>
The 直径 of the milling tool (and thus the <i>Width</i> of the 多边形) must be small enough to fit between any 两个 不同的 信号 以便 be able to isolate them from each other.<br>
<b>Make sure you run a <a href=#47>设计规则检查</a> (DRC) with 所有 <i>Clearance</i> values for 不同的 信号 set to 至少 the 直径 of 您的 milling tool!</b>
<p>
非零值s for the Isolate 参数 can be used 当 working sequentially with 不同的 milling tool 直径s 以便 avoid areas that have already been milled.
<h2>Cleaning up</h2>
Make sure that you 始终 delete the _OUTLINES_ 多边形 after 生成 the outlines data. Leaving this 多边形 in 您的 绘图 将导致 短路 因为 this special 多边形 does not adhere to the <a href=#136>设计规则</a>!


<a name=134>
<h1>自动布线器</h1>
集成的自动布线器 can be started from a board window with the <a href=#33>AUTO</a> 命令。
<p>
自动布线器也用作 "Follow-me" 布线器 in the <a href=#91>ROUTE</a> 命令。
<p>
请检查您的 <a href=#366>许可</a>，看一下是否您可以使用自动布线器模块。


<a name=135>
<h1>设计检查</h1>
有两个集成的命令，允许您检查您的设计：
<ul>
<li>电气规则检查（<a href=#49>ERC</a>）
<li>设计规则检查（<a href=#47>DRC</a>）
</ul>
ERC 在原理图窗口中执行，检查设计的电气一致性。
<p>
DRC 在电路板窗口中执行，检查设计 for overlaps, 距离 violations etc.


<a name=136>
<h1>设计规则</h1>
<i>设计规则</i> 定义所有 参数 that the 电路板布局 has to follow.
<p>
<a href=#47>设计规则检查</a> 检查 the 电路板 against 这些规则 and reports any violations.
<p>
PCB 图的设计规则可以通过设计规则对话框进行修改，which appears if the <a href=#47>DRC</a> 命令 is 所选的 without a terminating <tt>';'</tt>.
<p>
Newly 建立d PCB 图 take their 设计规则 from the file 'default.dru', which is searched for in the 第一个目录 listed in the “选项/目录/设计规则”路径。如果 no such file is present, the 程序's builtin 默认值s apply.
<p>
<b>注意</b> regarding the values for <b>Clearance</b> 和 <b>Distance</b>: 由于坐标的内部解析度为 1/10000mm，DRC 只能 reliably 报告错误 that are 大于 1/10000mm.
<h2>文件</h2>
The <i>文件</i> tab shows a 描述 of the 当前的set of 设计规则 and 允许您 <i>改变</i> that 描述 (this is strongly 推荐的 如果您定义您自己的设计规则）。也有按钮用来 <i>载入</i> 不同的 set of 设计规则 from a 磁盘文件 and to <i>保存</i> 当前的设计规则到磁盘。<br>
请注意 the 设计规则 are stored within 电路板图中 file, so they 将 be in effect if the board file is sent to a board house for production. The "载入..." and “另存为...”按钮 are merely for copying a board's 设计规则 to and from disk.
<p>
如果设计规则已修改，对话框的标题中的名称将 have trailing 星号（<tt>'*'</tt>）to mark the 设计规则 as modified. This mark 将 be removed 一旦 the 设计规则 are 明确地 written to disk, 或 a new set of 设计规则 is 载入的.
<h2>Layers</h2>
The <i>Layers</i> tab 定义了 which 信号层s the board actually uses，铜箔层和隔离（绝缘）层有多厚，and 何种过孔可以放置（请注意 this applies only to 实际的 <i>过孔</i>；所以即使从层 1 到 16 has been defined in the layer setup, <i>pads</i> 将始终被允许）。
<p>
The layer setup is defined by the string in the "Setup" field. This string 包含 a sequence of layer numbers, 由字符 <tt>'*'</tt> 或 <tt>'+'</tt> 之一分隔，where <tt>'*'</tt> stands for <i>core</i> 材料（also known as <i>FR4</i> 或某些类似的）and <tt>'+'</tt> stands for <i>prepreg</i> (or any 其它种类的绝缘材料）。实际的 <i>core</i> and <i>prepreg</i> sequence has no meaning to EAGLE otherthan varying the color in the layer display at the 左上角 of this tab (the 实际的多层设置 始终 needs to be worked out with the board manufacturer). The 过孔 are defined by enclosing a sequence of layers with <tt>(...)</tt>. So the setup string
<pre>
(1*16)
</pre>
将 mean a 两层板，使用了层 1 和 16，并且过孔贯穿整个板（这也是默认的值）。<br>
当 building a multilayer board the setup could be something like
<pre>
((1*2)+(15*16))
</pre>
which 为 四层板 with layer pairs 1/2 and 15/16 built on core material and 过孔 drilled through them, and finally the 两个 layer pairs pressed together with prepreg between them, and 过孔 drilled 所有 the way through the entire board.<br>
Besides 过孔 that go trough an entire layer stack (which are commonly referred to as <i>buried</i> 过孔 in case they have no 连接 to the 顶层和底层）there can also be 过孔 that are not drilled 所有 the way through a layer stack, but rather end at a layer inside that stack. Such 过孔 are known as <b>盲孔</b> and are defined in the "Setup" string by enclosing a sequence of layers with <tt>[t:...:b]</tt>, where <i>t</i> and <i>b</i> are the layers up to which that via 将 go from the top 或 底层, 分别. A possible setup with <b>盲孔</b> 过孔 could be
<pre>
[2:1+((2*3)+(14*15))+16:15]
</pre>
which is basically the previous 例子, with 两个 additional outer layers that 被连接到下一个内层 by <b>盲孔</b> 过孔。It is also possible to have only one of the <i>t</i> 或 <i>b</i> 参数, so 比如
<pre>
[2:1+((2*3)+(15*16))]
</pre>
将 also be a valid setup. Finally, <b>盲孔</b> are not limited to starting at the Top 或 Bottom layer，但也可用于in 内层 stacks，比如
<pre>
[2:1+[3:2+(3*4)+5:4]+16:5]
</pre>
A <b>盲孔</b> from 层 <i>a</i> 到层 <i>b</i> also 实现 所有 possible <b>盲孔</b> 过孔 from layer <i>a</i> to 所有 layers between layers <i>a</i> and <i>b</i>, so
<pre>
[3:1+2+(3*16)]
</pre>
将允许 <b>盲孔</b> from layer 1 to 2 as well as from 1 to 3.
<h2>Clearance</h2>
The <i>Clearance</i> tab 定义了 the various 最小的间隙值 between 对象 in 信号层s. 这些 are usually 绝对 最小的 values that are defined by the production process used and should be obtained from 您的 board manufacturer.<br>
The 实际的 最小的 间隙 between 对象 that belong to 不同的 信号 将 also be influenced by the <a href=#38>net classes</a> the 两个 信号 belong to.
<p>
请注意 a 多边形 in the special 信号 named _OUTLINES_ 将 be used to 生成 <a href=#133>outlines data</a> and as such 将 <b>not</b> adhere to 这些 间隙 values.
<h2>Distance</h2>
The <i>Distance</i> tab 定义了 the 最小的 距离 between 对象 in 信号层s and the board 尺寸s, as well as that between any 两个 drill holes. 请注意 only 信号 that are actually 连接ed 到 至少 one 焊盘 或 smd are checked against the board 尺寸s. This allows edge markers to be drawn in the 信号层 without 生成 DRC errors.
<p>
For compatibility with 版本 3.5x the 以下 applies:
如果 最小的 距离 between copper and 尺寸 is set to <tt>0</tt> 对象 in the 尺寸 layer 将 not be 被考虑在内 当计算多边形（except for Holes, which are 始终 被考虑在内). This also disables the 距离 check between copper and 尺寸标注对象.
<h2>Sizes</h2>
The <i>Sizes</i> tab 定义了 the 最小的 width of any 对象 in 信号层s and the 最小的 钻孔直径. 这些 are usually 绝对 最小的 values that are defined by the
production process used and should be obtained from 您的 board manufacturer.<br>
The 实际的 最小的 width of 信号 wires and 钻孔直径 of 过孔 将 also be influenced by the Net Class the 信号 belongs to.
<h2>Restring</h2>
The <i>Restring</i> tab 定义了 the width of the copper ring that has to remain after the 焊盘 或 via has been drilled. Values are defined in percent of the 钻孔直径 and
there can be an 绝对 最小的 and 最大的 limit. Restrings for 焊盘 can be 不同的 for the top, bottom and 内层s, while for 过孔 they can be 不同的 for the outer and 内层s.<br>
如果 实际的 直径 of a 焊盘 (as defined in the 元件库) 或 a via 会导致 a larger restring，that 值 将被用在外层。Pads in 元件库 封装 can have their 直径 set to 0, 以便 the restring 将 be derived entirely from the 钻孔直径.
<h2>Shapes</h2>
The <i>Shapes</i> tab 定义了 the 实际的 形状 for smds and 焊盘.<br>
Smds are normally defined as rectangles in the 元件库 (with a "roundness" of 0），but if 您的 design requires rounded smds 您可以 specify the roundness factor here.<br>
Pads are normally defined as octagons in the 元件库 (long octagons where this makes sense），and 您可以 use the 下拉列表框es to specify whether 您想要 have 焊盘 with the same 形状 as defined in the 元件库, 或 始终 square, round 或 octagonal. This can be set independently for the top and bottom layer.<br>
如果 "第一个" 焊盘 of a 封装 has been marked as such in the 元件库 it 将 get the 形状 as defined in the third 下拉列表框 (either round, square 或 octagonal, 或 no special 形状).<br>
The Elongation 参数 定义 the appearance of 焊盘 with 形状 Long 或 Offset.
<h2>Supply</h2>
The <i>Supply</i> tab 定义了 the Thermal isolation between 焊盘 and 信号 多边形s.
<h2>Masks</h2>
The <i>Masks</i> tab 定义了 the 尺寸s of solder stop and cream masks. They are 给定的 in percent of the smaller 尺寸 of smds, 焊盘和过孔 and can have an 绝对 最小的 and 最大的 值.<br>
Solder stop masks are 生成d for smds, 焊盘 and 那些 过孔 that have a 钻孔直径 that exceeds the 给定的 Limit 参数.<br>
Cream masks are 生成d for smds only.
<h2>Misc</h2>
<i>Misc</i> tab 允许您开启栅格和角度检查。Beside that 您可以 定义 whether checking for texts in 信号层s not written in vectorfont shall be made (缺省的 on). There's also an 选项 for checking for copper in 限制区域 (layers tRestrict/bRestrict. 缺省的 is on).
<p>


<a name=137>
<h1>对比参考</h1>
There are various methods that 可以用于 建立 对比参考 in EAGLE 原理图绘图。以下章节 describe each of them.
<ul>
<li><a href=#138>对比参考标签</a>
<li><a href=#139>Part 对比参考</a>
<li><a href=#140>Contact 对比参考</a>
</ul>


<a name=138>
<h1>对比参考标签</h1>
A 明文标签 可以用于 make the name of a net 可见的 in a 原理图。如果 a 标签 has the <i>xref</i> property activated, 它的行为 is changed 以便 it 变成 <i>对比参考标签</i>。
<p>
对比参考标签 are typically placed at the right 或 left border of a 原理图 图纸, and indicate the next (or previous) 图纸 a 特定的 net is used on. See the <a href=#61>LABEL</a> 命令 for a detailed 描述 of how this works.


<a name=139>
<h1>Part 对比参考</h1>
电气原理图经常使用机电继电器，由一个线圈以及一个或多个接点符号组成。如果线圈和触点 are distributed over various 原理图图纸，it is useful to have each contact indicate which 图纸 它的 coil is on. This can be achieved by giving the coil 单元 in the 器件 an add level of <i>Must</i>（参见 <a href=#29>ADD</a> 命令）and 放置 the text 变量 <tt>'&gt;XREF'</tt> somewhere in the contacts' 符号s（参见 the <a href=#101>TEXT</a> 命令).
<p>
当 actually displayed, the <tt>'&gt;XREF'</tt> text 变量 将 被替换 with the 图纸 number, frame 行和列 (依照 the <a href=#94>part 对比参考 format</a>) of the <i>Must</i> 单元 of this device.
<p>
See <a href=#140>Contact 对比参考</a> on how to display the contact locations on the 线圈的图纸。


<a name=140>
<h1>Contact 对比参考</h1>
On a multi-sheet electrical 原理图 with electro-mechanical relays that have their coils and contacts distributed over various 图纸, it is useful to be able to see which 图纸 the 单独的 contacts of a relay are on.
EAGLE can 自动地 display this <i>contact 对比参考</i> for each relay coil if the 以下 conditions are met.
<p>
The contact 符号s need to 包含 the <tt>'&gt;XREF'</tt> 文本变量 以便 生成 <a href=#139>part 对比参考</a>.
<p>
The 单元 符号s shall be drawn in a way that the 引脚 extend up and down, and that the 原点 is at 符号的中心。
<p>
The 第一个 contact 单元 in the 器件 绘图 shall be placed at an x-坐标 of 0, and 它的 y-坐标 shall be high enough to make sure 它的 lower pin is in the positive area, typically at 100mil. The rest of the contact 单元 shall be placed to the right of the 第一个 one, with their 原点s at the same y-坐标 as the 第一个 one. The coil 单元 can be placed at an 任意 位置.
<p>
In the 原理图 绘图 the contact 对比参考 将 be shown at the same x-坐标 as the coil instance, and right below the y-坐标 defined  by the text 变量 <tt>'&gt;CONTACT_XREF'</tt>. This text 变量 can be defined either in a 绘图 frame 符号 或 directly on the 图纸. 如果 it is present in both, the one in the 图纸 is taken。实际的文字将 not be 可见的 in the 原理图图纸中。
<p>
The graphical 呈现 of the contact 对比参考 包含 所有 the 单元 that have an <tt>'&gt;XREF'</tt> text 变量 (except for the 第一个 <i>Must</i> 单元, which is the coil and typically 不 have this 变量). The 单元 are rotated by 90 度 and are shown from top to bottom at the same offsets as they have been drawn from left to right in the 器件. Their 图纸编号 and frame locations are displayed to the right of each 单元 that is actually used. Any 其它texts that have been defined in the 符号 绘图s 将不被显示 当 using 这些 符号s for 生成 the contact 对比参考.
<p>
请注意 the contact 对比参考不能用鼠标选择。如果您 want to move it, move the coil instance and the contact 对比参考 将 自动地 follow it。The contact 对比参考 may get out of sync in case contact 单元 are invoked, moved, deleted 或 swapped, 或 if the <tt>'&gt;CONTACT_XREF'</tt> 文本变量被修改。这将在下一次窗口刷新时自动地更新。


<a name=141>
<h1>用户语言</h1>
EAGLE 用户语言可以用于 access the EAGLE 数据结构 and to 建立 a wide variety of 输出文件.
<p>
To use this feature you have to <a href=#142>编写用户语言程序（ULP）</a>，然后<a href=#143>执行</a>它。
<p>
The 以下 sections describe the EAGLE 用户语言 in detail:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#144>语法</a>             </td><td width=20><td>lists the 规则 a ULP file has to follow</td></tr>
<tr><td><a href=#167>数据类型</a>         </td><td width=20><td>定义了基本的数据类型</td></tr>
<tr><td><a href=#174>对象类型</a>       </td><td width=20><td>定义了 EAGLE 对象</td></tr>
<tr><td><a href=#216>定义</a>        </td><td width=20><td>显示如何 write a 定义</td></tr>
<tr><td><a href=#220>运算符</a>          </td><td width=20><td>列出有效的运算符</td></tr>
<tr><td><a href=#227>表达式</a>        </td><td width=20><td>显示如何 write 表达式</td></tr>
<tr><td><a href=#234>语句</a>         </td><td width=20><td>定义了有效的语句</td></tr>
<tr><td><a href=#246>内建</a> </td><td width=20><td>列出内建的常量、函数等等。</td></tr>
<tr><td><a href=#322>对话框</a> </td><td width=20><td>显示如何实现图形前端 to a ULP</td></tr>
</table>


<a name=142>
<h1>编写 a ULP</h1>
A 用户语言程序 为明文文本文件 which is written in a C-like <a href=#144>语法</a>。用户语言程序使用的扩展名为 <tt>.ulp</tt>。
您可以 建立 a ULP 文件 with any 文本编辑器（provided it does not insert any 额外的控制字符 into the file) 或 您可以使用 <a href=#26>内建的文本编辑器</a>。
<p>
A 用户语言程序 包含 两个 major items, <a href=#216>定义</a> and <a href=#234>语句</a>.
<p>
<a href=#216>定义</a> 用于定义常量、变量以及 函数 to be used by <a href=#234>语句</a>.
<p>
一个简单的 ULP 看起来 could look like this:
<pre>
#usage "Add the 字符 in the word 'Hello'\n"
       "Usage: RUN sample.ulp"
// Definitions:
string hello = "Hello";
int count(string s)
{
  int c = 0;
  for (int i = 0; s[i]; ++i)
      c += s[i];
  return c;
}
// 语句:
output("sample") {
  printf("Count is: %d\n", count(hello));
  }
</pre>
如果 <tt><a href=#150>#usage</a></tt> 指令 is present, 它的值将用在 <a href=#12>控制面板</a> 以显示程序的描述。
<p>
如果 ULP 的结果 shall be a specific 命令 that shall be 执行ed in the 编辑器窗口，<tt><a href=#268>exit()</a></tt> 函数可以用于发送 that 命令 to the 编辑器窗口.


<a name=143>
<h1>执行 ULP</h1>
用户语言程序 are executed by the <a href=#92>RUN</a> 命令 from an 编辑器窗口的命令行.
<p>
A ULP can 返回信息 on whether it has run 成功与否。您可以用 <tt><a href=#268>exit()</a></tt> 函数终止程序 and set the 返回值.
<p>
<tt>0</tt> 的返回值意味着 ULP 已经“正常（比如成功）”地结束，while any 其它值 is considered as an abnormal 程序终止。
<p>
ULP 的默认返回值为 <tt>0</tt>。
<p>
当 the <a href=#92>RUN</a> 命令被执行 as part of a <a href=#93>脚本文件</a>, the 脚本 is terminated if the ULP has exited with a 返回值 otherthan <tt>0</tt>.
<p>
<tt><a href=#268>exit()</a></tt> 函数的一个特殊变体可以用于 发送命令给 to the 编辑器窗口 as a result of the ULP.


<a name=144>
<h1>语法</h1>
用户语言程序基本的构建块为：
<ul>
<li><a href=#145>空白字符</a>
<li><a href=#146>注释</a>
<li><a href=#147>指令</a>
<li><a href=#151>关键字</a>
<li><a href=#152>标识符</a>
<li><a href=#153>常量</a>
<li><a href=#159>标点符号</a>
</ul>
All of 这些 have to follow certain syntactical 规则, which are described in their 各自的 sections.


<a name=145>
<h1>空白字符</h1>
在用户语言程序能被执行之前，它要从文件读入。在这个读入过程中，文件内容 is <i>parsed</i> into tokens and <i>空白字符</i>.
<p>
Any spaces (blanks），tabs, 换行字符 and <a href=#146>注释</a> are considered <i>空白字符</i> and are discarded.
<p>
The only place where ASCII 字符 representing <i>空白字符</i> are not discarded is within <a href=#153>literal strings</a>, like in
<pre>
string s = "Hello World";
</pre>
where the blank 字符 between <tt>'o'</tt> and <tt>'W'</tt> remains part of the string.
<p>
如果 final 换行字符 of a line is preceded by a 反斜线 (<tt>\</tt>），the 反斜线和换行字符 are both discarded, and the 两个 lines are 被看作 one line:
<pre>
"Hello \
World"
</pre>
is parsed as <tt>"Hello World"</tt>


<a name=146>
<h1>注释</h1>
当编写用户语言程序 it is good practice to 加入一些描述性的文字，giving the 读者 an idea about what this 特定的 ULP does。您可能也想在 ULP 文件中添加您的名字（并且，如果可以的话，您的 email 地址），以便其它使用您的程序人能联系到您 in case they have a problem 或 将 like to suggest an improvement.
<p>
有两个方法定义注释。第一个方法：
<pre>
/* some comment text */
</pre>
which marks any 字符 between (and including) the opening <tt>/*</tt> and the closing <tt>*/</tt> as comment. Such 注释 may expand over more than one lines,比如
<pre>
/* This is a
   multi line comment
*/
</pre>
but they do not nest. The 第一个 <tt>*/</tt> that follows any <tt>/*</tt> 将 end the comment.
<p>
定义注释的第二个方法：
<pre>
int i; // some comment text
</pre>
which marks any 字符 after (and including) the <tt>//</tt> and up to （但不包含）the 换行字符 at the end of the line as comment.


<a name=147>
<h1>指令</h1>
可用的 <i>指令</i> 如下：
<pre>
<a href=#148>#include</a>
<a href=#149>#require</a>
<a href=#150>#usage</a>
</pre>


<a name=148>
<h1>#include</h1>
用户语言程序可以 through the <tt>#include</tt> 指令重用其它 ULP 文件的代码。语法为：
<pre>
#include "<i>filename</i>"
</pre>
文件 <tt>filename</tt> is 首先查找 in the 同一目录 as the 当前的源文件 (that is the file that 包含 the <tt>#include</tt> 指令). 如果没有找到，it is searched for in the 目录 contained in the ULP directory path.
<p>
The 最大的 include depth is 10.
<p>
每个 <tt>#include</tt> 指令仅被处理<b>一次</b>。This makes sure that there are no multiple 定义 of the same 变量 或 函数, which 将 cause errors.
<h2>Portability note</h2>
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
如果 <i>filename</i> 包含目录路径，最好是始终使用 <b>正斜线</b> 作为目录分隔符（即使是在 Windows 下！）。Windows 驱动器符号 should be avoided。This way a 用户语言程序 可以在所有平台上运行。
</td></tr></table>


<a name=149>
<h1>#require</h1>
Over time it may happen that newer 版本s of EAGLE implement new 或 modified 用户语言 features, which can 导致错误消息 当 such a ULP is run from an 旧的版本 of EAGLE。为了 give the 用户 a dedicated 消息 that this ULP requires 至少 a certain 版本 of EAGLE, a ULP can 包含 the <tt>#require</tt> 指令. The 语法 is
<pre>
#require <i>version</i>
</pre>
The <i>version</i> 必须 be 给定的 as a <a href=#156>实数常量</a> of the form
<pre>
V.RRrr
</pre>
其中 <tt>V</tt> 为版本号，<tt>RR</tt> is the release number and <tt>rr</tt> is the (可选的) 修订号（both padded with 前导零s if they are 小于 10). 例如, if a ULP requires 至少 EAGLE 版本 4.11r06 (which is the beta 版本 that 第一个 implemented the <tt>#require</tt> 指令），it could use
<pre>
#require 4.1106
</pre>
The proper 指令 for 版本 5.1.2 将 be
<pre>
#require 5.0102
</pre>


<a name=150>
<h1>#usage</h1>
每个用户语言程序应包含关于它的功能的信息，如何使用以及由谁编写 maybe who wrote it.<br>
The 指令
<pre>
#usage <i>text</i> [, <i>text</i>...]
</pre>
实现 一个标准 way to make 该信息 available.
<p>
如果 <tt>#usage</tt> 指令 is present, 它的 <tt>text</tt> (which has to be a <a href=#157>字符串常量</a>）将被用在<a href=#12>控制面板</a>中，以显示程序的描述。
<p>
In case the ULP needs to 使用该信息，比如, a <a href=#326>dlgMessageBox()</a>，<tt>text</tt> is available to the 程序 through the <a href=#247>内建的常量</a> <tt>usage</tt>.
<p>
只有 <tt>#usage</tt> 指令 of the 主程序文件 (that is the one started with the <a href=#92>RUN</a> 命令) 将 take effect。因此 pure <a href=#148>include</a> 文件可以（并应该）也 have <tt>#usage</tt> 指令 of their own.
<p>
最好是把 <tt>#usage</tt> 指令放在文件的起始处，以便控制面板 不 have to parse 所有 the rest of the text 当 查找信息 to display.
<p>
如果 usage 信息 shall be made available in 几种语言，the texts of the 单独的语言 have to be 分隔 由 commas. Each of 这些文字 has to start with the 两个字母代码 of the 各自的 language (as delivered by the <a href=#270>language()</a> 函数），跟着一个冒号和任意数量的空格。如果 no suitable text is found for the language used on the 实际的系统，the 第一个 给定的 text 将 be used (this one should generally be English 以便 make the 程序 accessible to the largest number of users）。
<h2>例</h2>
<pre>
#usage "en: A sample ULP\n"
           "Implements example that shows how to use the EAGLE 用户语言\n"
           "Usage: RUN sample.ulp\n"
           "Author: john@home.org"，
       "de: Beispiel eines ULPs\n"
           "Implementiert ein Beispiel das zeigt, wie man die EAGLE 用户语言 benutzt\n"
           "Aufruf: RUN sample.ulp\n"
           "Author: john@home.org"
</pre>


<a name=151>
<h1>关键字</h1>
以下 <i>关键字</i> 为特殊用途所保留， and must not be used as normal 标识符名称：
<pre>
<a href=#238>break</a>
<a href=#244>case</a>
<a href=#168>char</a>
<a href=#239>continue</a>
<a href=#244>default</a>
<a href=#240>do</a>
<a href=#242>else</a>
<a href=#217>enum</a>
<a href=#241>for</a>
<a href=#242>if</a>
<a href=#169>int</a>
<a href=#218>numeric</a>
<a href=#170>real</a>
<a href=#243>return</a>
<a href=#171>string</a>
<a href=#244>switch</a>
<a href=#167>void</a>
<a href=#245>while</a>
</pre>
此外，<a href=#246>内建</a> 和 <a href=#174>对象类型</a> 的名称也是保留的，必须不能用作标识符名称。


<a name=152>
<h1>标识符</h1>
<i>标识符</i> 为 name that 用于 introduce a 用户定义的<a href=#217>常量</a>、<a href=#218>变量</a>或<a href=#219>函数</a>。
<p>
标识符 包含 a sequence of 字母 (<tt>a b c</tt>..., <tt>A B C</tt>...)，数字（<tt>1 2 3</tt>...）和下划线（<tt>_</tt>）。标识符的第一个字符<b>必须</b>为字母或 an 下划线。
<p>
标识符对大小写敏感，这意味着
<pre>
int Number, number;
</pre>
将定义成两个<b>不同的</b>整数变量。
<p>
标识符的最大长度为 100 个字符，并且所有这些都是 significant.


<a name=153>
<h1>常量</h1>
常量 are literal data items written into a 用户语言程序。依照不同的 <a href=#167>数据类型</a>，也有不同类型的常量。
<ul>
<li><a href=#154>字符常量</a>
<li><a href=#155>整数常量</a>
<li><a href=#156>实数常量</a>
<li><a href=#157>字符串常量</a>
</ul>


<a name=154>
<h1>字符常量</h1>
一个 <i>字符常量</i> 包含 a single 字符或者一个<a href=#158>转义序列</a> enclosed in 单引号，比如
<pre>
'a'
'='
'\n'
</pre>
字符常量的类型为 <tt><a href=#168>char</a></tt>。


<a name=155>
<h1>整数常量</h1>
依赖于第一个 (and possibly the second) 字符，an <i>整数常量</i> is assumed to be expressed in 不同的基值：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>第一个</td>        <td width=20><td>second</td>       <td width=20><td>constant interpreted as</td></tr>
<tr><td><tt>0</tt></td>   <td width=20><td><tt>1-7</tt></td> <td width=20><td>八进制（基 8）</td></tr>
<tr><td><tt>0</tt></td>   <td width=20><td><tt>x,X</tt></td> <td width=20><td>十六进制（基 16）</td></tr>
<tr><td><tt>1-9</tt></td> <td width=20><td>            </td> <td width=20><td>十进制（基 10）</td></tr>
</table>
<p>
整数常量的类型为 <tt><a href=#169>int</a></tt>。
<h2>例子</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>16</tt>      </td><td width=20><td>十进制</td></tr>
<tr><td><tt>020</tt>     </td><td width=20><td>八进制</td></tr>
<tr><td><tt>0x10</tt>    </td><td width=20><td>十六进制</td></tr>
</table>


<a name=156>
<h1>实数常量</h1>
<i>实数常量</i> follows the general 模式 
<pre>
[-]<i>int</i>.<i>frac</i>[e|E[&plusmn;]<i>exp</i>]
</pre>
which stands for
<ul>
<li>可选的 sign
<li>十进制整数
<li>十进制 point
<li>十进制 分数（小数）
<li><tt>e</tt> 或 <tt>E</tt> and a signed 整数 exponent
</ul>
您可以 忽略 either the 十进制整数 或 十进制分数（小数） (but not both）。您可以 忽略 either the 十进制 point 或 字母 <tt>e</tt> 或 <tt>E</tt> and the signed 整数 exponent (but not both).
<p>
实数常量的类型为 <tt><a href=#170>real</a></tt>。
<h2>例子</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Constant   </td><td width=20><td>Value</td></tr>
<tr><td><tt>23.45e6</tt>    </td><td width=20><td>23.45 x 10^6</td></tr>
<tr><td><tt>.0</tt>         </td><td width=20><td>0.0</td></tr>
<tr><td><tt>0.</tt>         </td><td width=20><td>0.0</td></tr>
<tr><td><tt>1.</tt>         </td><td width=20><td>1.0</td></tr>
<tr><td><tt>-1.23</tt>      </td><td width=20><td>-1.23</td></tr>
<tr><td><tt>2e-5</tt>       </td><td width=20><td>2.0 x 10^-5</td></tr>
<tr><td><tt>3E+10</tt>      </td><td width=20><td>3.0 x 10^10</td></tr>
<tr><td><tt>.09E34</tt>     </td><td width=20><td>0.09 x 10^34</td></tr>
</table>


<a name=157>
<h1>字符串常量</h1>
<i>字符串常量</i> 包含一串字符或<a href=#158>转义序列</a> enclosed in 双引号s, like
<pre>
"Hello world\n"
</pre>
字符串常量的类型为 <tt><a href=#171>string</a></tt>。
<p>
字符串常量可以为任意长度（provided there is 足够剩余内存可用）。
<p>
字符串常量 can be concatenated by simply 编写 them next to each other to form larger strings:
<pre>
string s = "Hello" " world\n";
</pre>
It is also possible to extend a 字符串常量 over more than one line by escaping the 换行字符 with a 反斜线 (<tt>\</tt>):
<pre>
string s = "Hello \
world\n";
</pre>


<a name=158>
<h1>转义序列</h1>
<i>转义序列</i> 包含一反斜线（<tt>\</tt>），跟着一个或多个特殊字符：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Sequence   </td><td width=20><td>Value</td></tr>
<tr><td><tt>\a</tt>  </td><td width=20><td>audible bell</td></tr>
<tr><td><tt>\b</tt>  </td><td width=20><td>backspace</td></tr>
<tr><td><tt>\f</tt>  </td><td width=20><td>form feed</td></tr>
<tr><td><tt>\n</tt>  </td><td width=20><td>new line</td></tr>
<tr><td><tt>\r</tt>  </td><td width=20><td>carriage return</td></tr>
<tr><td><tt>\t</tt>  </td><td width=20><td>horizontal tab</td></tr>
<tr><td><tt>\v</tt>  </td><td width=20><td>vertical tab</td></tr>
<tr><td><tt>\\</tt>  </td><td width=20><td>反斜线</td></tr>
<tr><td><tt>\'</tt>  </td><td width=20><td>单引号</td></tr>
<tr><td><tt>\"</tt>  </td><td width=20><td>双引号</td></tr>
<tr><td><tt>\O</tt>  </td><td width=20><td><tt>O</tt> = 上至 3 个八进制数字</td></tr>
<tr><td><tt>\xH</tt> </td><td width=20><td><tt>H</tt> = 上至 2 十六进制数字</td></tr>
</table>
<p>
Any 字符 以下 the initial 反斜线 that is not mentioned in this list 将 be 被看作 that 字符 (without the 反斜线).
<p>
转义序列可用于<a href=#154>字符常量</a>和<a href=#157>字符串常量</a>中。
<h2>例子</h2>
<pre>
'\n'
"A tab\tinside a text\n"
"Ring the bell\a\n"
</pre>


<a name=159>
<h1>标点符号</h1>
用在用户语言程序中的 <i>标点符号</i> 为：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>[]</tt>  </td><td width=20><td><a href=#160>方括号</a></td></tr>
<tr><td><tt>()</tt>  </td><td width=20><td><a href=#161>圆括号</a></td></tr>
<tr><td><tt>{}</tt>  </td><td width=20><td><a href=#162>大括号（花括号）</a></td></tr>
<tr><td><tt>,</tt>   </td><td width=20><td><a href=#163>逗号</a></td></tr>
<tr><td><tt>;</tt>   </td><td width=20><td><a href=#164>分号</a></td></tr>
<tr><td><tt>:</tt>   </td><td width=20><td><a href=#165>冒号</a></td></tr>
<tr><td><tt>=</tt>   </td><td width=20><td><a href=#166>等号</a></td></tr>
</table>
<p>
在 ULP 中，其它特殊字符用作 ULP 中的 <a href=#220>运算符</a>。


<a name=160>
<h1>方括号</h1>
<i>方括号</i> 用于数组定义
<pre>
int ai[];
</pre>
in 数组 subscripts
<pre>
n = ai[2];
</pre>
and in 字符串 subscripts to 访问字符串中单独的字符
<pre>
string s = "Hello world";
char c = s[2];
</pre>


<a name=161>
<h1>圆括号</h1>
<i>圆括号</i> group <a href=#227>表达式</a>（possibly altering normal <a href=#220>运算符</a> precedence），isolate 条件表达式, and indicate <a href=#233>函数调用</a>以及函数的参数:
<pre>
d = c * (a + b);
if (d == z) ++x;
func();
void func2(int n) { ... }
</pre>


<a name=162>
<h1>大括号（花括号）</h1>
<i>大括号（花括号）</i> 指明复合语句的起始与结束：
<pre>
if (d == z) {
   ++x;
   func();
   }
</pre>
and are 也用于 to group the 数组的初始值：
<pre>
int ai[] = { 1, 2, 3 };
</pre>


<a name=163>
<h1>逗号</h1>
<i>逗号</i> 分隔 函数参数列表的元素 或 函数调用的参数:
<pre>
int func(int n, real r, string s) { ... }
int i = func(1, 3.14, "abc");
</pre>
It also delimits the 数组的初始值：
<pre>
int ai[] = { 1, 2, 3 };
</pre>
and it 分隔变量定义的元素：
<pre>
int i, j, k;
</pre>


<a name=164>
<h1>分号</h1>
<i>分号</i> 用于终止<a href=#234>语句</a>，如
<pre>
i = a + b;
</pre>
and it also delimits the init, test and increment增量？  表达式 of a <a href=#241>for</a> 语句:
<pre>
for (int n = 0; n &lt; 3; ++n) {
    func(n);
    }
</pre>


<a name=165>
<h1>冒号</h1>
<i>冒号</i> 用于在 <a href=#244>switch</a> 语句中指明标签的结束:
<pre>
switch (c) {
  case 'a': printf("It was an 'a'\n"); break;
  case 'b': printf("It was a  'b'\n"); break;
  default: printf("none of them\n");
  }
</pre>


<a name=166>
<h1>等号</h1>
<i>等号</i> 用于把变量定义与初始化清单列表分隔开来：
<pre>
int i = 10;
char c[] = { 'a', 'b', 'c' };
</pre>
它也被用作<a href=#225>赋值运算符</a>。


<a name=167>
<h1>数据类型</h1>
用户语言程序能够定义不同类型的变量，representing the EAGLE 数据结构中容许的不同种类的信息。
<p>
四个基本的数据类型为
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt><a href=#168>char</a></tt>  </td><td width=20><td>用于单个字符</td></tr>
<tr><td><tt><a href=#169>int</a></tt>  </td><td width=20><td>用于整数数值</td></tr>
<tr><td><tt><a href=#170>real</a></tt>  </td><td width=20><td>用于浮点数值</td></tr>
<tr><td><tt><a href=#171>string</a></tt>  </td><td width=20><td>用于文本信息</td></tr>
</table>
<p>
Besides 这些基本数据类型 也有高级的<a href=#174>对象类型</a>，which 呈现存储在 EAGLE 数据文件中的数据结构。
<p>
特殊的数据类型 <tt>void</tt> 仅用作<a href=#219>函数</a>的返回类型，指明该函数<b>不</b>返回任何值。


<a name=168>
<h1>char</h1>
数据类型 <tt>char</tt> 用于存储单个字符, like the 字母 of the alphabet, 或小的无符号数。
<p>
<tt>char</tt> 类型的变量大小为 8 位（一个字节），可以存储 <tt>0..255</tt> 范围中的任何值。
<p>
<b>另请参阅</b> <a href=#220>运算符</a>, <a href=#154>字符常量</a>


<a name=169>
<h1>int</h1>
数据类型 <tt>int</tt> 用于存储有符号的整数数值，比如一个对象的坐标。
<p>
<tt>int</tt> 类型的变量大小为 32 bit（四个字节）。可以存储 <tt>-2147483648..2147483647</tt> 范围内的任何值
<p>
<b>另请参阅</b> <a href=#155>整数常量</a>


<a name=170>
<h1>real</h1>
数据类型 <tt>real</tt> 用于存储有符号的浮点数值，比如栅格距离。
<p>
<tt>real</tt> 类型的变量大小为 64 bit （八个字节），可以存储范围 <tt>&plusmn;2.2e-308..&plusmn;1.7e+308</tt> 内 15 位数字精度的任何数值。
<p>
<b>另请参阅</b> <a href=#156>实数常量</a>


<a name=171>
<h1>字符串</h1>
数据类型 <tt>字符串</tt> 用于存储文本信息，比如一个零件或网络的名称。
<p>
<tt>字符串</tt> 类型的变量 is not limited in it's size (provided there is 足够的内存 available).
<p>
变量 of type <tt>字符串</tt> are defined without an explicit <i>size</i>。它们会在程序执行过程中根据需要自动地增长。
<p>
<tt>字符串</tt>变量的元素 are of type <tt><a href=#169>int</a></tt> and can be accessed 单独的ly by using <tt>[index]</tt>。<tt>字符串</tt>的第一个字符的索引为 <tt>0</tt>：
<pre>
string s = "Layout";
printf("Third char is: %c\n", s[2]);
</pre>
This 将 print the 字符 <tt>'y'</tt>. 请注意 <tt>s[2]</tt> 返回 the <b>third</b> 字符 of <tt>s</tt>!
<p>
无损的转换 A lossless 转换 to <tt><a href=#168>char</a></tt> is possible for 标准的 ASCII 字符串：
<pre>
string s = "Layout";
char c = s[2];
</pre>
<p>
<b>另请参阅</b> <a href=#220>运算符</a>，<a href=#249>内建的函数</a>，<a href=#157>字符串常量</a>
<h2>实现细节</h2>
数据类型 <tt>字符串</tt> is actually implemented like native C-type zero terminated 字符串。Looking at the 以下变量定义
<pre>
string s = "abcde";
</pre>
<tt>s[4]</tt> 为字符 <tt>'e'</tt>，<tt>s[5]</tt> 为 <tt>'\0'</tt>, 或整数值 <tt>0x00</tt>。这实际上可以用于不使用 <tt><a href=#287>strlen()</a></tt> 函数来确定字符串的结束 ，比如
<pre>
for (int i = 0; s[i]; ++i) {
    // do something with s[i]
    }
</pre>
它也 perfectly ok to "cut off" part of a string by "punching" a 零字符 into it:
<pre>
string s = "abcde";
s[3] = 0;
</pre>
这将导致 <tt>s</tt> 具有值 <tt>"abc"</tt>。请注意 everything 跟着 the zero 字符 将 actually 被消失， and it won't come back by restoring the 原始的字符 The same applies to 任何其它操作 that sets a 字符 to 0, 比如 --s[3].


<a name=172>
<h1>类型转换</h1>
一个算术<a href=#227>表达式</a>的结果类型，比如 <tt>a + b</tt>，其中 <tt>a</tt> 和 <tt>b</tt> 为不同的算术类型，is 等于 the "larger" of the 两个操作数类型。
<p>
算术类型为 <tt><a href=#168>char</a></tt>，<tt><a href=#169>int</a></tt> 和 <tt><a href=#170>real</a></tt>(in that order）。So if, e.g. <tt>a</tt> 的类型为 <tt><a href=#169>int</a></tt>，<tt>b</tt> 的类型为 <tt><a href=#170>real</a></tt>，表达式 <tt>a + b</tt> 的结果将是 <tt><a href=#170>real</a></tt>。
<p>
<b>另请参阅</b> <a href=#173>强制类型转换</a>


<a name=173>
<h1>强制类型转换</h1>
算术<a href=#227>表达式</a>的结果类型可以明确地转换为不同的算术类型 by applying a <i>强制类型转换</i> to it.
<p>
强制类型转换的一般语法：
<pre>
type(表达式)
</pre>
其中 <tt>type</tt> 为 <tt><a href=#168>char</a></tt>、<tt><a href=#169>int</a></tt> 或 <tt><a href=#170>real</a></tt> 之一，<tt>表达式</tt> 为任意算术 <a href=#227>表达式</a>.
<p>
当强制转换 <tt><a href=#170>real</a></tt> 表达式为 <tt><a href=#169>int</a></tt>，the fractional part of 值 is truncated!
<p>
<b>另请参阅</b> <a href=#172>类型转换</a>


<a name=174>
<h1>对象类型</h1>
EAGLE 数据类型存储在三个二进制文件类型（译注：当前版本已改为 XML 格式的文件）：
<ul>
<li>Library (*.lbr)
<li>Schematic (*.sch)
<li>Board (*.brd)
</ul>
这些数据文件包含对象的层次结构。在用户语言程序中，您可以访问这些 hierarchies through their 各自的 内建的访问语句:
<pre>
<a href=#316>library</a>(L) { ... }
<a href=#319>schematic</a>(S) { ... }
<a href=#314>board</a>(B) { ... }
</pre>
这些访问语句 set up a 上下文 within which 您可以访问所有包含在元件库，原理图或 PCB 图中的对象。
<p>
这些对象的属性可以通过 <i>members</i> 访问。
<p>
有两类成员：
<ul>
<li>数据成员
<li>循环成员
</ul>
<b>数据成员</b>立即返回从一个对象请求的数据。例如，在
<pre>
board(B) {
  printf("%s\n", B.name);
  }
</pre>
中，数据成员 board 对象 <i>B</i> 的 <i>name</i> 返回 board 的名称。<br>
数据成员也可以返回其它对象,比如
<pre>
board(B) {
  printf("%f\n", B.grid.size);
  }
</pre>
where the board's <i>grid</i> 数据成员 返回一栅格对象，of which the <i>size</i> 数据成员 then 返回 the 栅格的尺寸。
<p>
<b>循环成员</b>用于访问同一类的多个对象，which are contained in a higher level object:
<pre>
board(B) {
  B.elements(E) {
    printf("%-8s %-8s\n", E.name, E.value);
    }
  }
</pre>
这个例子 uses the board's <i>元素s()</i> 循环成员 function to set up a 遍历 电路板的所有元素。The block 以下 the <tt>B.元素s(E)</tt> 语句 被执行 in turn for 每个元素, and 当前的元素 can be referenced inside the block through the name <tt>E</tt>.
<p>
循环成员按 alpha-numerical order  顺序处理对象，provided they have a name.
<p>
A 循环成员 function 建立s a 变量 of the type necessary to hold the 请求的对象。You are free to use any 有效的名称 for such a 变量，所以上述的例子也可以写为
<pre>
board(MyBoard) {
  MyBoard.elements(TheCurrentElement) {
    printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
    }
  }
</pre>
and 将 do the exact same thing. The scope of the 变量 建立d by a 循环成员函数 is limited to the 语句（或块）immediately 跟着循环函数调用。
<p>
<h2>元件库的对象层次结构：</h2>
<pre>
<a href=#196>LIBRARY</a>
  <a href=#190>GRID</a>
  <a href=#195>LAYER</a>
  <a href=#185>DEVICESET</a>
    <a href=#184>DEVICE</a>
    <a href=#189>GATE</a>
  <a href=#198>PACKAGE</a>
    <a href=#182>CONTACT</a>
      <a href=#199>PAD</a>
      <a href=#209>SMD</a>
    <a href=#180>CIRCLE</a>
    <a href=#191>HOLE</a>
    <a href=#204>RECTANGLE</a>
    <a href=#188>FRAME</a>
    <a href=#186>DIMENSION</a>
    <a href=#211>TEXT</a>
    <a href=#215>WIRE</a>
    <a href=#203>POLYGON</a>
      <a href=#215>WIRE</a>
  <a href=#210>SYMBOL</a>
    <a href=#201>PIN</a>
    <a href=#180>CIRCLE</a>
    <a href=#204>RECTANGLE</a>
    <a href=#188>FRAME</a>
    <a href=#186>DIMENSION</a>
    <a href=#211>TEXT</a>
    <a href=#215>WIRE</a>
    <a href=#203>POLYGON</a>
      <a href=#215>WIRE</a>
</pre>
<h2>原理图的对象层次结构：</h2>
<pre>
<a href=#205>SCHEMATIC</a>
  <a href=#190>GRID</a>
  <a href=#195>LAYER</a>
  <a href=#196>LIBRARY</a>
  <a href=#177>ATTRIBUTE</a>
  <a href=#212>VARIANTDEF</a>
  <a href=#200>PART</a>
    <a href=#177>ATTRIBUTE</a>
    <a href=#213>VARIANT</a>
  <a href=#207>SHEET</a>
    <a href=#180>CIRCLE</a>
    <a href=#204>RECTANGLE</a>
    <a href=#188>FRAME</a>
    <a href=#186>DIMENSION</a>
    <a href=#211>TEXT</a>
    <a href=#215>WIRE</a>
    <a href=#203>POLYGON</a>
      <a href=#215>WIRE</a>
    <a href=#192>INSTANCE</a>
      <a href=#177>ATTRIBUTE</a>
    <a href=#179>BUS</a>
      <a href=#206>SEGMENT</a>
        <a href=#194>LABEL</a>
          <a href=#211>TEXT</a>
          <a href=#215>WIRE</a>
        <a href=#215>WIRE</a>
    <a href=#197>NET</a>
      <a href=#206>SEGMENT</a>
        <a href=#193>JUNCTION</a>
        <a href=#202>PINREF</a>
        <a href=#211>TEXT</a>
        <a href=#215>WIRE</a>
</pre>
<h3>改变 note from 版本 5 to 版本 6，兼容性</h3>
<ul>
<li>由于 版本 6 the instance is in the hierarchy no longer below the part but below the 图纸.</li>
<li>零件不再在图纸之下，而在原理图之下。The part is no longer below the 图纸, but below the 原理图.</li>
</ul>
For 兼容性的原因 the access by the according 成员函数 is further supported, but <a href=#302>对象函数</a>的行为 reflects the new hierarchy.
<h2>电路板图的对象层次结构：</h2>
<pre>
<a href=#178>BOARD</a>
  <a href=#190>GRID</a>
  <a href=#195>LAYER</a>
  <a href=#196>LIBRARY</a>
  <a href=#177>ATTRIBUTE</a>
  <a href=#212>VARIANTDEF</a>
  <a href=#180>CIRCLE</a>
  <a href=#191>HOLE</a>
  <a href=#204>RECTANGLE</a>
  <a href=#188>FRAME</a>
  <a href=#186>DIMENSION</a>
  <a href=#211>TEXT</a>
  <a href=#215>WIRE</a>
  <a href=#203>POLYGON</a>
    <a href=#215>WIRE</a>
  <a href=#187>ELEMENT</a>
    <a href=#177>ATTRIBUTE</a>
    <a href=#213>VARIANT</a>
  <a href=#208>SIGNAL</a>
    <a href=#183>CONTACTREF</a>
    <a href=#203>POLYGON</a>
      <a href=#215>WIRE</a>
    <a href=#214>VIA</a>
    <a href=#215>WIRE</a>
</pre>


<a name=175>
<h1>UL_ARC</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle1</tt>       </td><td width=20><td><a href=#170>real</a>（起始角度，<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>angle2</tt>       </td><td width=20><td><a href=#170>real</a>（结束角度，<tt>0.0</tt>...<tt>719.9</tt>）</td></tr>
<tr><td><tt>cap</tt>          </td><td width=20><td><a href=#169>int</a>（<tt>CAP_...</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>radius</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>width</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x1, y1</tt>       </td><td width=20><td><a href=#169>int</a>（起点）</td></tr>
<tr><td><tt>x2, y2</tt>       </td><td width=20><td><a href=#169>int</a>（结束点）</td></tr>
<tr><td><tt>xc, yc</tt>       </td><td width=20><td><a href=#169>int</a>（中心点）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#215>UL_WIRE</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>CAP_FLAT</tt>  </td><td width=20><td>平的圆弧末端</td></tr>
<tr><td><tt>CAP_ROUND</tt>   </td><td width=20><td>圆的圆弧末端</td></tr>
</table>
<h2>注</h2>
起始和结束角度 are defined 数学上的 mathematically positive （即逆时针），with <tt>angle1</tt> &lt; <tt>angle2</tt>。为保证该条件，起始点和结束点 of an UL_ARC may be exchanged with respect to the UL_WIRE the arc has been 衍生自.
<h2>例</h2>
<pre>
board(B) {
  B.wires(W) {
    if (W.arc)
       printf("Arc: (%f %f), (%f %f), (%f %f)\n"，u2mm(W.arc.x1), u2mm(W.arc.y1), u2mm(W.arc.x2), u2mm(W.arc.y2), u2mm(W.arc.xc), u2mm(W.arc.yc));
    }
  }
</pre>


<a name=176>
<h1>UL_AREA</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>x1, y1</tt>       </td><td width=20><td><a href=#169>int</a>（左下角）</td></tr>
<tr><td><tt>x2, y2</tt>       </td><td width=20><td><a href=#169>int</a>（右上角）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#184>UL_DEVICE</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#210>UL_SYMBOL</a>
<p>
UL_AREA 是一个抽象的对象 which gives 信息 关于 the area covered by an 对象。对于一个 UL_PACKAGE 或 UL_SYMBOL in a UL_ELEMENT 或 UL_INSTANCE 上下文, 分别, the area is 给定的 in 绝对 绘图坐标，包括元素或实例的偏移。
<h2>例</h2>
<pre>
board(B) {
  printf("Area: (%f %f), (%f %f)\n", u2mm(B.area.x1), u2mm(B.area.y1), u2mm(B.area.x2), u2mm(B.area.y2));
  }
</pre>


<a name=177>
<h1>UL_ATTRIBUTE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>constant</tt>    </td><td width=20><td><a href=#169>int</a> (0=变量，即允许覆写，1=常量 - 见注）</td></tr>
<tr><td><tt>defaultvalue</tt> </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>display</tt>      </td><td width=20><td><a href=#169>int</a>（<tt>ATTRIBUTE_DISPLAY_FLAG_...</tt>）</td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>text</tt>         </td><td width=20><td><a href=#211>UL_TEXT</a>（见注）</td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#184>UL_DEVICE</a>，<a href=#200>UL_PART</a>，<a href=#192>UL_INSTANCE</a>，<a href=#187>UL_ELEMENT</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>ATTRIBUTE_DISPLAY_FLAG_OFF</tt>   </td><td width=20><td>无显示</td></tr>
<tr><td><tt>ATTRIBUTE_DISPLAY_FLAG_VALUE</tt>   </td><td width=20><td>显示值</td></tr>
<tr><td><tt>ATTRIBUTE_DISPLAY_FLAG_NAME</tt>    </td><td width=20><td>显示名称</td></tr>
</table>
<p>
UL_ATTRIBUTE 被用于访问 <i>attributes</i> that 已被定义在元件库 for a 元件，或 assigned to 一个原理图或 PCB 图中的零件 。
<h2>注</h2>
<tt>display</tt> 包含 a bitwise or'ed value consisting of <tt>ATTRIBUTE_DISPLAY_FLAG_...</tt> and 定义了 which parts of the 属性 are actually drawn。这个值 is only valid if <tt>display</tt> 用在 UL_INSTANCE 或 UL_ELEMENT 语境。
<p>
在一 UL_ELEMENT 语境中，如果正/反向编序处于激活状态，<tt>constant</tt> 仅返回一实际的值，否则它返回 0。
<p>
成员 <tt>defaultvalue</tt>  返回 值 as 定义在元件库（如果不同于实际的值，否则与 <tt>value</tt> 相同）。在一 UL_ELEMENT 语境中，如果正/反向编序处于激活状态，<tt>defaultvalue</tt> 仅返回实际的值，否则返回一空字串。
<p>
成员 <tt>text</tt>  is only available in a UL_INSTANCE 或 UL_ELEMENT 上下文 and 返回 a UL_TEXT 对象 that 包含所有文本参数。该文本对象的值为 is the string as it 将被显示ed 依照 the UL_ATTRIBUTE 的 'display' 参数。如果从不同的语境调用，返回的 UL_TEXT 对象的数据是未定义的。
<p>
For 全局属性 only <tt>name</tt> 与 <tt>value</tt> 被定义。
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.parts(P) {
    P.attributes(A) {
      printf("%s = %s\n", A.name, A.value);
      }
    }
  }
SCHEMATIC(SCH) {
  SCH.attributes(A) { // 全局属性
    printf("%s = %s\n", A.name, A.value);
    }
  }
</pre>


<a name=178>
<h1>UL_BOARD</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>始终vectorfont</tt></td><td width=20><td><a href=#169>int</a>（<tt>ALWAYS_VECTOR_FONT_..., see note</tt>）</td></tr>
<tr><td><tt>area</tt>         </td><td width=20><td><a href=#176>UL_AREA</a></td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>STRING</a></td></tr>
<tr><td><tt>grid</tt>         </td><td width=20><td><a href=#190>UL_GRID</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>verticaltext</tt> </td><td width=20><td><a href=#169>int</a>（<tt>VERTICAL_TEXT_...</tt>）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attributes()</tt>  </td><td width=20><td><a href=#177>UL_ATTRIBUTE</a>（见注）</td></tr>
<tr><td><tt>circles()</tt>    </td><td width=20><td><a href=#180>UL_CIRCLE</a></td></tr>
<tr><td><tt>classes()</tt>    </td><td width=20><td><a href=#181>UL_CLASS</a></td></tr>
<tr><td><tt>dimensions()</tt> </td><td width=20><td><a href=#186>UL_DIMENSION</a></td></tr>
<tr><td><tt>elements()</tt>   </td><td width=20><td><a href=#187>UL_ELEMENT</a></td></tr>
<tr><td><tt>frames()</tt>     </td><td width=20><td><a href=#188>UL_FRAME</a></td></tr>
<tr><td><tt>holes()</tt>      </td><td width=20><td><a href=#191>UL_HOLE</a></td></tr>
<tr><td><tt>layers()</tt>     </td><td width=20><td><a href=#195>UL_LAYER</a></td></tr>
<tr><td><tt>library()</tt>  </td><td width=20><td><a href=#196>UL_LIBRARY</a></td></tr>
<tr><td><tt>polygons()</tt>   </td><td width=20><td><a href=#203>UL_POLYGON</a></td></tr>
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#204>UL_RECTANGLE</a></td></tr>
<tr><td><tt>SIGNAL()</tt>    </td><td width=20><td><a href=#208>UL_SIGNAL</a></td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a></td></tr>
<tr><td><tt>variantdefs()</tt></td><td width=20><td><a href=#212>UL_VARIANTDEF</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#196>UL_LIBRARY</a>，<a href=#205>UL_SCHEMATIC</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>ALWAYS_VECTOR_FONT_GUI</tt></td><td width=20><td>始终vectorfont is set in the <a href=#16>用户界面对话框</a></td></tr>
<tr><td><tt>ALWAYS_VECTOR_FONT_PERSISTENT</tt></td><td width=20><td>始终vectorfont is set persistent in this board</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>VERTICAL_TEXT_UP</tt></td><td width=20><td>竖直文字的读取方向：up</td></tr>
<tr><td><tt>VERTICAL_TEXT_DOWN</tt></td><td width=20><td>竖直文字的读取方向：down</td></tr>
</table>
<h2>注</h2>
<tt>always vectorfont</tt> 返回的值可用于 can be used in boolean 上下文 或 can be masked with the <tt>ALWAYS_VECTOR_FONT_...</tt> 常量 to determine the source of this setting,比如
<pre>
if (B.始终vectorfont) {
   // 始终vectorfont is set in general
   }
if (B.始终vectorfont &amp; 始终_VECTOR_FONT_GUI) {
   // 始终vectorfont is set in the 用户 interface
   }
</pre>
<tt>name</tt> 成员返回完整的文件名，包括目录。
<p>
The <tt>attributes()</tt> 循环成员 遍历 the <i>global</i> 属性.
<h2>例</h2>
<pre>
board(B) {
  B.element元素s(E) printf("Element: %s\n", E.name);
  B.SIGNAL(S)  printf("Signal: %s\n", S.name);
  }
</pre>


<a name=179>
<h1>UL_BUS</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>BUS_NAME_LENGTH</tt>）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>segments()</tt>   </td><td width=20><td><a href=#206>UL_SEGMENT</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#207>UL_SHEET</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>BUS_NAME_LENGTH</tt>   </td><td width=20><td>总线名称的最大长度（已废弃 - as 从版本 4 总线名称可以有任意长度）</td></tr>
</table>
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.SHEET(SH) {
    SH.busses(B) printf("Bus: %s\n", B.name);
    }
  }
</pre>


<a name=180>
<h1>UL_CIRCLE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>radius</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>width</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（中心点）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#210>UL_SYMBOL</a>
<h2>例</h2>
<pre>
board(B) {
  B.circles(C) {
    printf("Circle: (%f %f), r=%d, w=%d\n", u2mm(C.x), u2mm(C.y), u2mm(C.radius), u2mm(C.width));
    }
  }
</pre>


<a name=181>
<h1>UL_CLASS</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>clearance[number]</tt></td><td width=20><td><a href=#169>int</a>（见注）</td></tr>
<tr><td><tt>drill</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>name</tt>        </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>number</tt>      </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>width</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#136>设计规则</a>，<a href=#197>UL_NET</a>，<a href=#208>UL_SIGNAL</a>，<a href=#205>UL_SCHEMATIC</a>，<a href=#178>UL_BOARD</a>
<h2>注</h2>
成员 <tt>clearance</tt> 返回该网络分类和给定号码的网络分类之间的间隙值。如果省略号码（和方括号），则返回网络分类自身的间隙值。如果给定了号码，它必须为 0 and the number of this 网络分类.
<p>
如果 <tt>name</tt> 成员返回一空字串，（则说明）网络分类（尚未）定义，因此（尚未）被任何信号或网络使用。
<h2>例</h2>
<pre>
board(B) {
  B.SIGNAL(S) {
    printf("%-10s %d %s\n", S.name, S.class.number, S.class.name);
    }
  }
</pre>


<a name=182>
<h1>UL_CONTACT</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>CONTACT_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>pad</tt>          </td><td width=20><td><a href=#199>UL_PAD</a></td></tr>
<tr><td><tt>signal</tt>       </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>smd</tt>          </td><td width=20><td><a href=#209>UL_SMD</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（中心点，见注）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>polygons()</tt>   </td><td width=20><td><a href=#203>UL_POLYGON</a> (of 任意 焊盘 形状)</td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a> (of 任意 焊盘 形状)</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#198>UL_PACKAGE</a>，<a href=#199>UL_PAD</a>，<a href=#209>UL_SMD</a>，<a href=#183>UL_CONTACTREF</a>，<a href=#202>UL_PINREF</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>CONTACT_NAME_LENGTH</tt>   </td><td width=20><td>推荐的 contact 的名称的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
数据成员 <tt>signal</tt> 返回 the 信号 this contact is 被连接ed 到 (only available in a board 上下文).
<p>
接点的坐标（<tt>x, y</tt>）依赖于 the 上下文 in which it is called:
<ul>
<li>if the contact is 衍生自 a UL_LIBRARY 上下文, 接点的坐标将与定义在封装绘图中的相同
<li>in 所有 其它cases, they 将 have the 实际的值s from the board
</ul>
<h2>例</h2>
<pre>
library(L) {
  L.packages(PAC) {
    PAC.contacts(C) {
      printf("Contact: '%s', (%f %f)\n", C.name, u2mm(C.x), u2mm(C.y));
      }
    }
  }
</pre>


<a name=183>
<h1>UL_CONTACTREF</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>contact</tt>      </td><td width=20><td><a href=#182>UL_CONTACT</a></td></tr>
<tr><td><tt>元素</tt>      </td><td width=20><td><a href=#187>UL_ELEMENT</a></td></tr>
<tr><td><tt>route</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>CONTACT_ROUTE_...</tt>）</td></tr>
<tr><td><tt>routetag</tt>     </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#208>UL_SIGNAL</a>, <a href=#202>UL_PINREF</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>CONTACT_ROUTE_ALL</tt>   </td><td width=20><td>必须明确地 route to 所有 contacts</td></tr>
<tr><td><tt>CONTACT_ROUTE_ANY</tt>   </td><td width=20><td>可以 route to any contact</td></tr>
</table>
<h2>注</h2>
如果 <tt>route</tt> 具有值 <tt>CONTACT_ROUTE_ANY</tt>，数据成员 <tt>routetag</tt> 返回 an additional tag which 描述了一组 <tt>contactref</tt>s 属于同一引脚。
<h2>例</h2>
<pre>
board(B) {
  B.SIGNAL(S) {
    printf("Signal '%s'\n", S.name);
    S.contactrefs(C) {
      printf("\t%s, %s\n", C.element.name, C.contact.name);
      }
    }
  }
</pre>


<a name=184>
<h1>UL_DEVICE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>activetechnology</tt> </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>area</tt>         </td><td width=20><td><a href=#176>UL_AREA</a></td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>library</tt>      </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>DEVICE_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>package</tt>      </td><td width=20><td><a href=#198>UL_PACKAGE</a>（见注）</td></tr>
<tr><td><tt>前缀</tt>       </td><td width=20><td><a href=#171>字符串</a>（<tt>DEVICE_PREFIX_LENGTH</tt>）</td></tr>
<tr><td><tt>technologies</tt> </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a>（"On" 或 "Off"）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attributes()</tt>  </td><td width=20><td><a href=#177>UL_ATTRIBUTE</a>（见注）</td></tr>
<tr><td><tt>gates()</tt>      </td><td width=20><td><a href=#189>UL_GATE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#185>UL_DEVICESET</a>，<a href=#196>UL_LIBRARY</a>，<a href=#200>UL_PART</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>DEVICE_NAME_LENGTH</tt>   </td><td width=20><td>推荐的设备名称的最大长度（仅用于格式化输出）</td></tr>
<tr><td><tt>DEVICE_PREFIX_LENGTH</tt> </td><td width=20><td>推荐的设备前缀的最大长度（仅用于格式化输出）</td></tr>
</table>
<p>
UL_DEVICE 的所有成员，除了 <tt>name</tt> 和 <tt>technologies</tt>，返回相同的值 as the 各自的 members of the UL_DEVICESET in which the UL_DEVICE 已被定义。成员 <tt>name</tt> 返回 the name of the 封装变体 this device has been 建立d for 使用 <a href=#74>PACKAGE</a> 命令。当使用 <tt>描述</tt> text keep in mind that it may 包含换行字符（<tt>'\n'</tt>）。
<h2>注</h2>
由成员 <tt>activetechnology</tt> 返回的值依赖于 the 上下文 in which it is called:
<ul>
<li>如果元件 is 衍生自 the deviceset that is 当前编辑ed in the 元件库编辑器窗口, the active technology, set by the <a href=#100>TECHNOLOGY</a> 命令，will be returned 
<li>如果元件是 衍生自 a  UL_PART，将返回由零件使用的实际的技术（工艺）
<li>否则将返回一空字串。
</ul>
<p>
数据成员 <tt>package</tt> 返回 the <a href=#198>封装</a> that 已分配给元件 through a <a href=#74>PACKAGE</a> 命令。它可以用作 It can be used as a boolean function to 检查是否封装已分配给元件（见下面的例子）。
<p>
由成员 <tt>technologies</tt> 返回的值 依赖于 the 上下文 in which it is called:
<ul>
<li>如果元件是派生自 衍生自 a  UL_DEVICESET, <tt>technologies</tt> 将返回一字符串，包含所有元件的技术工艺，由空格分隔
<li>如果元件是 衍生自 a  UL_PART，仅由零件使用的实际的技术（工艺）将被返回。
</ul>
<p>
循环成员 <tt>attributes()</tt> takes an additional 参数 that specifies for which 技术（工艺） the 属性 shall be delivered（参见下面的第二个例子）。
<h2>例子</h2>
<pre>
library(L) {
  L.devicesets(S) {
    S.devices(D) {
      if (D.package)
         printf("Device: %s, Package: %s\n", D.name, D.package.name);
      D.gates(G) {
        printf("\t%s\n", G.name);
        }
      }
    }
  }
</pre>
<pre>
library(L) {
  L.devicesets(DS) {
    DS.devices(D) {
      string t[];
      int n = strsplit(t, D.technologies, ' ');
      for (int i = 0; i &lt; n; i++) {
          D.attributes(A, t[i]) {
            printf("%s = %s\n", A.name, A.value);
            }
          }
      }
    }
  }
</pre>


<a name=185>
<h1>UL_DEVICESET</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>activedevice</tt> </td><td width=20><td><a href=#184>UL_DEVICE</a>（见注）</td></tr>
<tr><td><tt>area</tt>         </td><td width=20><td><a href=#176>UL_AREA</a></td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>library</tt>      </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>DEVICE_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>前缀</tt>       </td><td width=20><td><a href=#171>字符串</a>（<tt>DEVICE_PREFIX_LENGTH</tt>）</td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a> ("On" 或 "Off")</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>devices()</tt>    </td><td width=20><td><a href=#184>UL_DEVICE</a></td></tr>
<tr><td><tt>gates()</tt>      </td><td width=20><td><a href=#189>UL_GATE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#184>UL_DEVICE</a>，<a href=#196>UL_LIBRARY</a>，<a href=#200>UL_PART</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>DEVICE_NAME_LENGTH</tt>   </td><td width=20><td>推荐的设备名称的最大长度（仅用于格式化输出）</td></tr>
<tr><td><tt>DEVICE_PREFIX_LENGTH</tt> </td><td width=20><td>推荐的设备前缀的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
如果 a deviceset is 当前 edited in a 元件库 编辑器窗口，成员 <tt>activedevice</tt> 返回 the active device, 所选的 by a <a href=#74>PACKAGE</a> 命令。它也可用作 a boolean function to check the availability of such an <tt>activedevice</tt>（参见下面的例子）。
<p>
成员 <tt>描述</tt> 返回用 <a href=#44>DESCRIPTION</a> 命令定义的完整的描述性文字，而 <tt>headline</tt> 成员只返回描述的第一行，不含任何 <a href=#360>HTML</a> 标签。当使用 <tt>描述</tt> text keep in mind that it may 包含换行字符（<tt>'\n'</tt>）。
<h2>例</h2>
<pre>
library(L) {
  L.devicesets(D) {
    printf("Device set: %s, 描述: %s\n", D.name, D.描述);
    D.gates(G) {
      printf("\t%s\n", G.name);
      }
    }
  }
</pre>
<pre>
if (deviceset)
   deviceset(DS) {
     if (DS.activedevice)
        printf("Active Device: %s\n", DS.activedevice.name);
     }
</pre>


<a name=186>
<h1>UL_DIMENSION</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>dtype</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>DIMENSION_...</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>ext长度</tt>    </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>extoffset</tt>    </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>extwidth</tt>     </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>precision</tt>    </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>ratio</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>size</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>unit</tt>         </td><td width=20><td><a href=#169>int</a>（<tt>GRID_UNIT_...</tt>）</td></tr>
<tr><td><tt>可见的</tt>      </td><td width=20><td><a href=#169>int</a>（<tt>unit</tt>, 0=off, 1=on)</td></tr>
<tr><td><tt>width</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x1, y1</tt>       </td><td width=20><td><a href=#169>int</a>（第一个参考点）</td></tr>
<tr><td><tt>x2, y2</tt>       </td><td width=20><td><a href=#169>int</a>（第二个参考点）</td></tr>
<tr><td><tt>x3, y3</tt>       </td><td width=20><td><a href=#169>int</a>（对齐参考点）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#190>UL_GRID</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#210>UL_SYMBOL</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>DIMENSION_PARALLEL</tt>    </td><td width=20><td>linear 尺寸 with parallel 测量 line</td></tr>
<tr><td><tt>DIMENSION_HORIZONTAL</tt>  </td><td width=20><td>linear 尺寸 with horizontal 测量 line</td></tr>
<tr><td><tt>DIMENSION_VERTICAL</tt>    </td><td width=20><td>linear 尺寸 with vertical 测量 line</td></tr>
<tr><td><tt>DIMENSION_RADIUS</tt>      </td><td width=20><td>radial 尺寸</td></tr>
<tr><td><tt>DIMENSION_DIAMETER</tt>    </td><td width=20><td>直径 尺寸</td></tr>
<tr><td><tt>DIMENSION_ANGLE</tt>       </td><td width=20><td>angle 尺寸</td></tr>
<tr><td><tt>DIMENSION_LEADER</tt>      </td><td width=20><td>an 任意 pointer</td></tr>
</table>
<h2>注</h2>
The <tt>texts()</tt> and <tt>wires()</tt> 循环成员s 遍历 所有文字 and wires the 尺寸 包含.
<h2>例</h2>
<pre>
board(B) {
  B.dimensions(D) {
    printf("Dimension: (%f %f), (%f %f), (%f %f)\n", u2mm(D.x1), u2mm(D.y1), u2mm(D.x2), u2mm(D.y2), u2mm(D.x3), u2mm(D.y3));
    }
  }
</pre>


<a name=187>
<h1>UL_ELEMENT</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>attribute[]</tt>  </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>column</tt>       </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>locked</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>mirror</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>ELEMENT_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>package</tt>      </td><td width=20><td><a href=#198>UL_PACKAGE</a></td></tr>
<tr><td><tt>populate</tt>     </td><td width=20><td><a href=#169>int</a> (0=do not populate, 1=populate)</td></tr>
<tr><td><tt>row</tt>          </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>smashed</tt>      </td><td width=20><td><a href=#169>int</a>（见注）</td></tr>
<tr><td><tt>spin</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a>（<tt>ELEMENT_VALUE_LENGTH</tt>）</td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a> (原点 point)</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attributes()</tt>  </td><td width=20><td><a href=#177>UL_ATTRIBUTE</a></td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a>（见注）</td></tr>
<tr><td><tt>variants()</tt>   </td><td width=20><td><a href=#213>UL_VARIANT</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#183>UL_CONTACTREF</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>ELEMENT_NAME_LENGTH</tt>   </td><td width=20><td>推荐的元素名称的最大长度（仅用于格式化输出）</td></tr>
<tr><td><tt>ELEMENT_VALUE_LENGTH</tt>  </td><td width=20><td>推荐的元素前缀的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
成员 <tt>attribute[]</tt> 可被用于查询 a UL_ELEMENT for 值 of a 给定的属性（参见下面的第二个例子）。返回的字符串为空  如果没有 属性 by the 给定的 name, 或 if this 属性 is 明确地 empty.
<p>
The <tt>texts()</tt> 成员 only 遍历 那些 texts of the 元素 that have been detached using <a href=#97><b>SMASH</b></a>, and through the 可见的 texts of any 属性 assigned to this 元素. To process 所有 texts of an 元素 (e.g. 当 绘图 it), you have to 遍历 the 元素's own <tt>texts()</tt> 成员 as well as the <tt>texts()</tt> 成员 of the 元素's <a href=#198>封装</a>.
<p>
<tt>angle</tt> 定义了 how many 度 the 元素 is 逆时针旋转 around 它的 原点.
<p>
成员 <tt>column</tt> 与 <tt>row</tt> 返回 the 行、列位置 within the <a href=#188>frame</a> 在电路板图中 绘图. 如果没有 frame in the 绘图, 或 the 元素 is placed outside the frame, a <tt>'?'</tt> (question mark) is returned.
<p>
成员 <tt>smashed</tt> tells 是否 the 元素 is smashed。该函数也可用于找出 是否 there 为 detached text 参数 by giving the name of 该参数 in 方括号，比如 <tt>smashed["VALUE"]</tt>。This is useful in case 您想要 选择 such a text with the <a href=#69>MOVE</a> 命令 by doing <tt>MOVE R5&gt;VALUE</tt>。有效的参数名称为 "NAME" 和 "VALUE", as well as the names of any 用户定义的 <a href=#177>attributes</a>. They are treated case insensitive, and they may be preceded by a <tt>'&gt;'</tt> 字符
<h2>例子</h2>
<pre>
board(B) {
  B.elements(E) {
    printf("Element: %s, (%f %f), Package=%s\n",
           E.name, u2mm(E.x), u2mm(E.y), E.package.name);
    }
  }
</pre>
<pre>
board(B) {
  B.elements(E) {
    if (E.attribute["REMARK"])
       printf("%s: %s\n", E.name, E.attribute["REMARK"]);
    }
  }
</pre>


<a name=188>
<h1>UL_FRAME</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>columns</tt>      </td><td width=20><td><a href=#169>int</a>（<tt>-127</tt>...<tt>127</tt>）</td></tr>
<tr><td><tt>rows</tt>         </td><td width=20><td><a href=#169>int</a>（<tt>-26</tt>...<tt>26</tt>）</td></tr>
<tr><td><tt>border</tt>       </td><td width=20><td><a href=#169>int</a>（<tt>FRAME_BORDER_...</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x1, y1</tt>       </td><td width=20><td><a href=#169>int</a>（左下角）</td></tr>
<tr><td><tt>x2, y2</tt>       </td><td width=20><td><a href=#169>int</a>（右上角）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#210>UL_SYMBOL</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>FRAME_BORDER_BOTTOM</tt>    </td><td width=20><td>bottom border is drawn</td></tr>
<tr><td><tt>FRAME_BORDER_RIGHT</tt>     </td><td width=20><td>right border is drawn</td></tr>
<tr><td><tt>FRAME_BORDER_TOP</tt>       </td><td width=20><td>top border is drawn</td></tr>
<tr><td><tt>FRAME_BORDER_LEFT</tt>      </td><td width=20><td>left border is drawn</td></tr>
</table>
<h2>注</h2>
<tt>border</tt> 包含 a bitwise or'ed 值 consisting of <tt>FRAME_BORDER_...</tt> and 定义了 which of the four borders are actually drawn.
<p>
循环成员s  <tt>texts()</tt> 和 <tt>wires()</tt>  遍历 所有 the texts and wires the frame 包含.
<h2>例</h2>
<pre>
board(B) {
  B.frames(F) {
    printf("Frame: (%f %f), (%f %f)\n", u2mm(F.x1), u2mm(F.y1), u2mm(F.x2), u2mm(F.y2));
    }
  }
</pre>


<a name=189>
<h1>UL_GATE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>addlevel</tt>     </td><td width=20><td><a href=#169>int</a>（<tt>GATE_ADDLEVEL_...</tt>）</td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>GATE_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>swaplevel</tt>    </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>符号</tt>       </td><td width=20><td><a href=#210>UL_SYMBOL</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（原点，见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#184>UL_DEVICE</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>GATE_ADDLEVEL_MUST</tt>    </td><td width=20><td>must</td></tr>
<tr><td><tt>GATE_ADDLEVEL_CAN</tt>     </td><td width=20><td>can</td></tr>
<tr><td><tt>GATE_ADDLEVEL_NEXT</tt>    </td><td width=20><td>next</td></tr>
<tr><td><tt>GATE_ADDLEVEL_REQUEST</tt> </td><td width=20><td>request</td></tr>
<tr><td><tt>GATE_ADDLEVEL_ALWAYS</tt>  </td><td width=20><td>始终</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>GATE_NAME_LENGTH</tt>      </td><td width=20><td>推荐的单元名称的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
The 坐标 of the 原点（x, y）are 始终 那些 of the 单元's 位置 within the device, 即使 the UL_GATE has been 衍生自 a <a href=#192>UL_INSTANCE</a>.
<h2>例</h2>
<pre>
library(L) {
  L.devices(D) {
    printf("Device: %s, Package: %s\n", D.name, D.package.name);
    D.gates(G) {
      printf("\t%s, swaplevel=%d, symbol=%s\n", G.name, G.swaplevel, G.symbol.name);
      }
    }
  }
</pre>


<a name=190>
<h1>UL_GRID</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>distance</tt>     </td><td width=20><td><a href=#170>real</a></td></tr>
<tr><td><tt>dots</tt>         </td><td width=20><td><a href=#169>int</a> (0=lines, 1=dots)</td></tr>
<tr><td><tt>multiple</tt>     </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>on</tt>           </td><td width=20><td><a href=#169>int</a> (0=off, 1=on)</td></tr>
<tr><td><tt>unit</tt>         </td><td width=20><td><a href=#169>int</a>（<tt>GRID_UNIT_...</tt>）</td></tr>
<tr><td><tt>unitdist</tt>     </td><td width=20><td><a href=#169>int</a>（<tt>GRID_UNIT_...</tt>）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#196>UL_LIBRARY</a>，<a href=#205>UL_SCHEMATIC</a>，<a href=#276>单位转换</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>GRID_UNIT_MIC</tt>   </td><td width=20><td>microns</td></tr>
<tr><td><tt>GRID_UNIT_MM</tt>    </td><td width=20><td>millimeter</td></tr>
<tr><td><tt>GRID_UNIT_MIL</tt>   </td><td width=20><td>mil</td></tr>
<tr><td><tt>GRID_UNIT_INCH</tt>  </td><td width=20><td>inch</td></tr>
</table>
<h2>注</h2>
<tt>unitdist</tt> 返回 the 栅格单位 that was set to 定义实际的栅格尺寸（由 <tt>distance</tt> 返回），而 <tt>unit</tt> 返回 the 栅格单位 that 用于 显示 值 或 interpret 用户输入。
<h2>例</h2>
<pre>
board(B) {
  printf("Gridsize=%f\n", B.grid.distance);
  }
</pre>


<a name=191>
<h1>UL_HOLE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>直径[layer]</tt> </td><td width=20><td><a href=#169>int</a>（见注）</td></tr>
<tr><td><tt>drill</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>drill符号</tt>  </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（中心点）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>
<h2>注</h2>
<tt>直径[]</tt> is only defined vor layers <tt>LAYER_TSTOP</tt> 和 <tt>LAYER_BSTOP</tt>，并返回 the 直径 of the solder stop mask in the 给定的层。
<p>
<tt>drill符号</tt> 返回 the number of the 钻孔符号 that 已分配给该钻孔直径（参见 手册 for a list of 已定义的钻孔符号）。数值 <tt>0</tt> 意味着尚无符号分配给该钻孔直径。
<h2>例</h2>
<pre>
board(B) {
  B.holes(H) {
    printf("Hole: (%f %f), drill=%f\n", u2mm(H.x), u2mm(H.y), u2mm(H.drill));
    }
  }
</pre>


<a name=192>
<h1>UL_INSTANCE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0</tt>, <tt>90</tt>, <tt>180</tt> and <tt>270</tt>）</td></tr>
<tr><td><tt>column</tt>       </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>gate</tt>         </td><td width=20><td><a href=#189>UL_GATE</a></td></tr>
<tr><td><tt>mirror</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>INSTANCE_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>part</tt>         </td><td width=20><td><a href=#200>UL_PART</a></td></tr>
<tr><td><tt>row</tt>          </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>sheet</tt>        </td><td width=20><td><a href=#169>int</a>（0=unused, &gt;0=sheet number)</td></tr>
<tr><td><tt>smashed</tt>      </td><td width=20><td><a href=#169>int</a>（见注）</td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a>（<tt>PART_VALUE_LENGTH</tt>）</td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（原点）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attributes()</tt>  </td><td width=20><td><a href=#177>UL_ATTRIBUTE</a>（见注）</td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a>（见注）</td></tr>
<tr><td><tt>xrefs()</tt>      </td><td width=20><td><a href=#189>UL_GATE</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#202>UL_PINREF</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>INSTANCE_NAME_LENGTH</tt>   </td><td width=20><td>推荐的 instance 的名称的最大长度（仅用于格式化输出）</td></tr>
<tr><td><tt>PART_VALUE_LENGTH</tt>      </td><td width=20><td>推荐的零件的值的最大长度（instances do not have a 值 of their own!)</td></tr>
</table>
<h2>注</h2>
成员 <tt>attributes()</tt> only 遍历 那些属性 that have been 明确地 assigned to this instance (including <i>smashed</i> 属性）。
<p>
成员 <tt>texts()</tt> only 遍历 那些 texts of the instance that have been detached using <a href=#97><b>SMASH</b></a>, and through the 可见的 texts of any 属性 assigned to this instance. To process 所有文字 of an instance, you have to 遍历 the instance's own <tt>texts()</tt> 成员 as well as the <tt>texts()</tt> 成员 of the instance's gate's <a href=#210>符号</a>. 如果 属性 have been assigned to an instance, <tt>texts()</tt> delivers their texts in the form as they are 当前 可见的.
<p>
成员 <tt>column</tt> 和 <tt>row</tt> 返回列与行的位置 row 位置 within the <a href=#188>frame</a> on the 图纸 on which this instance is invoked. 如果没有 frame on that 图纸, 或 the instance is placed outside the frame, a <tt>'?'</tt> (question mark) is returned. 这些成员只能用于 a 图纸 上下文.
<p>
成员 <tt>smashed</tt>  tells whether the instance is smashed。该函数也可用于找出 whether there is detached text 参数 by giving the name of that 参数 in 方括号，比如 <tt>smashed["VALUE"]</tt>. This is useful in case 您想要 选择 such a text with the <a href=#69>MOVE</a> 命令 by doing <tt>MOVE R5&gt;VALUE</tt>。合法的参数名成为 "NAME"，"VALUE"，"PART" 和 "GATE"，as well as the names of any 用户定义的 <a href=#177>属性</a>。They are treated case insensitive, and they may be preceded by a <tt>'&gt;'</tt> 字符
<p>
成员 <tt>xrefs()</tt> 遍历 the <a href=#140>contact 对比参考</a> 单元 of this instance. 这些 are only of importance if the ULP is going to 建立 a 绘图 of some sort (比如 a DXF 文件）。
<h2>例</h2>
<pre>
SCHEMATIC(S) {
  S.parts(P) {
    printf("Part: %s\n", P.name);
    P.instances(I) {
      if (I.sheet != 0)
         printf("\t%s used on sheet %d\n", I.name, I.sheet);
      }
    }
  }
</pre>


<a name=193>
<h1>UL_JUNCTION</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>diameter</tt>     </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a> (center point)</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#206>UL_SEGMENT</a>
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.SHEET(SH) {
    SH.nets(N) {
      N.segments(SEG) {
        SEG.junctions(J) {
          printf("Junction: (%f %f)\n", u2mm(J.x), u2mm(J.y));
          }
        }
      }
    }
  }
</pre>


<a name=194>
<h1>UL_LABEL</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>mirror</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>spin</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>text</tt>         </td><td width=20><td><a href=#211>UL_TEXT</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（原点）</td></tr>
<tr><td><tt>xref</tt>         </td><td width=20><td><a href=#169>int</a>（0=plain, 1=对比参考）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#206>UL_SEGMENT</a>
<h2>注</h2>
如果 <tt>xref</tt> 返回一非零值，循环成员 <tt>wires()</tt>  遍历 the wires that form the 标志 of a 对比参考标签. Otherwise it is an empty loop.
<p>
成员 <tt>angle</tt>, <tt>layer</tt>, <tt>mirror</tt> 和 <tt>spin</tt> 始终返回 the same values as 那些 of the UL_TEXT 对象 returned by the <tt>text</tt> 成员。text 的成员 <tt>x</tt> 和 <tt>y</tt>  return slightly 偏移值 for 对比参考标签（非零的 <tt>xref</tt>），otherwise they also return the same values as the UL_LABEL.
<p>
<tt>xref</tt> 仅对于网络标签有意义。对于总线标签，它始终返回 0。
<h2>例</h2>
<pre>
sheet(SH) {
  SH.nets(N) {
    N.segments(S) {
      S.labels(L) {
        printf("Label: (%f %f) '%s'", u2mm(L.x), u2mm(L.y), L.text.value);
        }
      }
    }
  }
</pre>


<a name=195>
<h1>UL_LAYER</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>color</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>fill</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>LAYER_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>number</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>used</tt>         </td><td width=20><td><a href=#169>int</a> (0=unused, 1=used)</td></tr>
<tr><td><tt>可见的</tt>      </td><td width=20><td><a href=#169>int</a> (0=off, 1=on)</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#196>UL_LIBRARY</a>，<a href=#205>UL_SCHEMATIC</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>LAYER_NAME_LENGTH</tt>   </td><td width=20><td>推荐的层的名称的最大长度（仅用于格式化输出）</td></tr>
<tr><td><tt>LAYER_TOP</tt>  </td><td width=20><td>层的号码</td></tr>
<tr><td><tt>LAYER_BOTTOM</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_PADS</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_VIAS</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_UNROUTED</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_DIMENSION</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TPLACE</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BPLACE</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_T原点S</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_B原点S</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TNAMES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BNAMES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TVALUES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BVALUES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TSTOP</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BSTOP</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TCREAM</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BCREAM</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TFINISH</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BFINISH</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TGLUE</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BGLUE</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TTEST</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BTEST</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TKEEPOUT</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BKEEPOUT</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TRESTRICT</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BRESTRICT</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_VRESTRICT</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_DRILLS</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_HOLES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_MILLING</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_MEASURES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_DOCUMENT</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_REFERENCE</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_TDOCU</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BDOCU</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_NETS</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_BUSSES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_PINS</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_SYMBOLS</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_NAMES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_VALUES</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_INFO</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_GUIDE</tt>  </td><td width=20><td></td></tr>
<tr><td><tt>LAYER_USER</tt>  </td><td width=20><td>用户定义的层的最低号码（100）</td></tr>
</table>
<h2>例</h2>
<pre>
board(B) {
  B.layers(L) printf("Layer %3d %s\n", L.number, L.name);
  }
</pre>


<a name=196>
<h1>UL_LIBRARY</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>grid</tt>         </td><td width=20><td><a href=#190>UL_GRID</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>LIBRARY_NAME_LENGTH</tt>，见注）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>devices()</tt>    </td><td width=20><td><a href=#184>UL_DEVICE</a></td></tr>
<tr><td><tt>devicesets()</tt> </td><td width=20><td><a href=#185>UL_DEVICESET</a></td></tr>
<tr><td><tt>layers()</tt>     </td><td width=20><td><a href=#195>UL_LAYER</a></td></tr>
<tr><td><tt>packages()</tt>   </td><td width=20><td><a href=#198>UL_PACKAGE</a></td></tr>
<tr><td><tt>symbols()</tt>    </td><td width=20><td><a href=#210>UL_SYMBOL</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#205>UL_SCHEMATIC</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>LIBRARY_NAME_LENGTH</tt>   </td><td width=20><td>推荐的元件库名称的最大长度（仅用于格式化输出）</td></tr>
</table>
<p>
成员 <tt>devices()</tt> 遍历 所有 the 封装变体和技术工艺 of 所有 UL_DEVICESETs in the 元件库, thus resulting in 所有 the 实际的 device variations available。成员<tt>devicesets()</tt> only 遍历 the UL_DEVICESETs, which in turn can be queried for their UL_DEVICE members.
<h2>注</h2>
成员 <tt>描述</tt> 返回 the 完整的 描述性的 text as defined with the <a href=#44>DESCRIPTION</a> 命令，while the <tt>headline</tt> 成员 返回 only the 第一行 of the 描述, without any <a href=#360>HTML</a> tags。当 using the <tt>描述</tt> text keep in mind that it may 包含换行字符 (<tt>'\n'</tt>). The <tt>描述</tt> and <tt>headline</tt> 信息 is only available within a 元件库绘图, not if the 元件库 is derived form a UL_BOARD 或 UL_SCHEMATIC 上下文.
<p>
如果 元件库 is derived form a UL_PCB图或 UL_SCHEMATIC 上下文, <tt>name</tt> 返回 the pure 元件库名称（不含路径或扩展名）。否则 it 返回 the full 元件库 file name.
<h2>例</h2>
<pre>
library(L) {
  L.devices(D)     printf("Dev: %s\n", D.name);
  L.devicesets(D)  printf("Dev: %s\n", D.name);
  L.packages(P)    printf("Pac: %s\n", P.name);
  L.symbols(S)     printf("Sym: %s\n", S.name);
  }
SCHEMATIC(S) {
  S.library(L) printf("Library: %s\n", L.name);
  }
</pre>


<a name=197>
<h1>UL_NET</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>class</tt>        </td><td width=20><td><a href=#181>UL_CLASS</a></td></tr>
<tr><td><tt>column</tt>       </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>NET_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>row</tt>          </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>pinrefs()</tt>    </td><td width=20><td><a href=#202>UL_PINREF</a>（见注）</td></tr>
<tr><td><tt>segments()</tt>   </td><td width=20><td><a href=#206>UL_SEGMENT</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#207>UL_SHEET</a>，<a href=#205>UL_SCHEMATIC</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>NET_NAME_LENGTH</tt>   </td><td width=20><td>推荐的网络名称的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
The <tt>pinrefs()</tt> 循环成员 只能 be used if the net is in a 原理图 上下文.<br>
The <tt>segments()</tt> 循环成员 只能 be used if the net is in a 图纸 上下文.
<p>
成员 <tt>column</tt> 和 <tt>row</tt> 返回行列位置 within the <a href=#188>frame</a> on the 图纸 on which this net is drawn. 由于 a net can extend over a certain area, each of 这些 函数 返回 两个 values, 分隔 由 a blank. In case of <tt>column</tt> 这些 are the left- and rightmost columns touched by the net, and in case of <tt>row</tt> it's the top- and bottommost row.
<p>
当 determining the 行和列 of a net on a 图纸, 第一个 the column and then the row within that column 被考虑在内. Here XREF labels take precedence over normal labels, which again take precedence over net wires.
<p>
如果没有 frame on that 图纸, <tt>"? ?"</tt> (两个 question marks) is returned. 如果 any part of the net is placed outside the frame, either of the values may be <tt>'?'</tt> (question mark). 这些成员只能用于 in a 图纸 上下文.
<h2>例</h2>
<pre>
SCHEMATIC(S) {
  S.nets(N) {
    printf("Net: %s\n", N.name);
    // N.segments(SEG) 将 NOT work here!
    }
  }
SCHEMATIC(S) {
  S.SHEET(SH) {
    SH.nets(N) {
      printf("Net: %s\n", N.name);
      N.segments(SEG) {
        SEG.wires(W) {
          printf("\tWire: (%f %f) (%f %f)\n", u2mm(W.x1), u2mm(W.y1), u2mm(W.x2), u2mm(W.y2));
          }
        }
      }
    }
  }
</pre>


<a name=198>
<h1>UL_PACKAGE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>area</tt>         </td><td width=20><td><a href=#176>UL_AREA</a></td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>library</tt>      </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>PACKAGE_NAME_LENGTH</tt>）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>circles()</tt>    </td><td width=20><td><a href=#180>UL_CIRCLE</a></td></tr>
<tr><td><tt>contacts()</tt>   </td><td width=20><td><a href=#182>UL_CONTACT</a></td></tr>
<tr><td><tt>dimensions()</tt> </td><td width=20><td><a href=#186>UL_DIMENSION</a></td></tr>
<tr><td><tt>frames()</tt>     </td><td width=20><td><a href=#188>UL_FRAME</a></td></tr>
<tr><td><tt>holes()</tt>      </td><td width=20><td><a href=#191>UL_HOLE</a></td></tr>
<tr><td><tt>polygons()</tt>   </td><td width=20><td><a href=#203>UL_POLYGON</a>（见注）</td></tr>
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#204>UL_RECTANGLE</a></td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a>（见注）</td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#184>UL_DEVICE</a>，<a href=#187>UL_ELEMENT</a>，<a href=#196>UL_LIBRARY</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PACKAGE_NAME_LENGTH</tt>   </td><td width=20><td>max. 推荐的 长度 of a 封装 name （仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
成员 <tt>description</tt> 返回用 <a href=#44>DESCRIPTION</a> 命令定义的 完整的 描述性文字，while the <tt>headline</tt> 成员 返回 only the 第一行 of the 描述, without any <a href=#360>HTML</a> 标签。 当 using the <tt>描述</tt> text keep in mind that it may 包含换行字符 (<tt>'\n'</tt>).
<p>
如果 UL_PACKAGE is 衍生自 a UL_ELEMENT，成员 <tt>texts()</tt>  only 遍历 the non-detached texts of that 元素.
<p>
如果 UL_PACKAGE is 衍生自 a UL_ELEMENT, 多边形s and wires belonging to contacts with 任意 焊盘 形状 are available through the 循环成员s <tt>polygons()</tt> and <tt>wires()</tt> of this contact.
<h2>例</h2>
<pre>
library(L) {
  L.packages(PAC) {
    printf("Package: %s\n", PAC.name);
    PAC.contacts(C) {
      if (C.pad)
         printf("\tPad: %s, (%f %f)\n",
                 C.name, u2mm(C.pad.x), u2mm(C.pad.y));
      else if (C.smd)
         printf("\tSmd: %s, (%f %f)\n",
                 C.name, u2mm(C.smd.x), u2mm(C.smd.y));
      }
    }
  }
board(B) {
  B.elements(E) {
    printf("Element: %s, Package: %s\n", E.name, E.package.name);
    }
  }
</pre>


<a name=199>
<h1>UL_PAD</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>diameter[layer]</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>drill</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>drill符号</tt>  </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>elongation</tt>   </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>flags</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>PAD_FLAG_...</tt>）</td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>PAD_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>shape[layer]</tt> </td><td width=20><td><a href=#169>int</a>（<tt>PAD_SHAPE_...</tt>）</td></tr>
<tr><td><tt>signal</tt>       </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（中心点，见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#198>UL_PACKAGE</a>，<a href=#182>UL_CONTACT</a>，<a href=#209>UL_SMD</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PAD_FLAG_STOP</tt>             </td><td width=20><td>生成阻焊层</td></tr>
<tr><td><tt>PAD_FLAG_THERMALS</tt>         </td><td width=20><td>生成阻热焊盘</td></tr>
<tr><td><tt>PAD_FLAG_FIRST</tt>            </td><td width=20><td>use special "第一个焊盘" 形状</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PAD_SHAPE_SQUARE</tt>   </td><td width=20><td>square</td></tr>
<tr><td><tt>PAD_SHAPE_ROUND</tt>    </td><td width=20><td>round</td></tr>
<tr><td><tt>PAD_SHAPE_OCTAGON</tt>  </td><td width=20><td>octagon</td></tr>
<tr><td><tt>PAD_SHAPE_LONG</tt>     </td><td width=20><td>long</td></tr>
<tr><td><tt>PAD_SHAPE_OFFSET</tt>   </td><td width=20><td>offset</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PAD_NAME_LENGTH</tt>   </td><td width=20><td>推荐的焊盘名称的最大长度（与 <tt>CONTACT_NAME_LENGTH</tt> 相同）</td></tr>
</table>
<h2>注</h2>
焊盘参数依赖于 the 上下文 in which it is accessed:
<ul>
<li>if the 焊盘 is 衍生自 a UL_LIBRARY 上下文, the 坐标 (<tt>x, y</tt>) and <tt>angle</tt> 将 be the same as defined in the 封装 绘图
<li>in 所有 其它cases, they 将 have the 实际的值s from the board
</ul>
<p>
焊盘的直径和形状依赖于 the layer for which they shall be retrieved, because they may be 不同的 in 每个层 依赖于 the <a href=#136>设计规则</a>。If one of the <a href=#195>layers</a> LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP 或 LAYER_BSTOP is 给定的 as the index to the 直径 或 形状 数据成员, the resulting 值 将 be 已计算的 依照设计规则。如果给定了 LAYER_PADS，the raw 值 as defined in the 元件库 将 be returned.
<p>
<tt>drill符号</tt> 返回 the number of the 钻孔符号 that 已分配给 this 钻孔直径（参见 the 手册 for a list of defined 钻孔符号s). A 值 of <tt>0</tt> means that no 符号 已分配给 this 钻孔直径.
<p>
<tt>angle</tt> 定义了焊盘绕着它的中心逆时针旋转多少度。
<p>
<tt>elongation</tt> is only valid for 形状 PAD_SHAPE_LONG and PAD_SHAPE_OFFSET and 定义了 how many percent the long side of such a 焊盘 is longer than 它的 small side. This member 返回 0 for any 其它pad 形状.
<p>
值 returned by <tt>flags</tt> must be masked with the <tt>PAD_FLAG_...</tt> 常量 to determine the 单独的 标志 设置,比如
<pre>
if (pad.flags &amp; PAD_FLAG_STOP) {
   ...
   }
</pre>
请注意，如果您的 ULP 只是要绘制对象，您不需要 to check 这些 标志s 明确地. The <tt>diameter[]</tt> 和 <tt>shape[]</tt> 成员将返回 the proper data; 比如, if <tt>PAD_FLAG_STOP</tt> is set, <tt>diameter[LAYER_TSTOP]</tt> 将 返回 <tt>0</tt>, which should result in nothing being drawn in that layer. The <tt>flags</tt> 成员 is mainly for ULPs that want to 建立 脚本文件 that 建立 元件库 对象.
<h2>例</h2>
<pre>
library(L) {
  L.packages(PAC) {
    PAC.contacts(C) {
      if (C.pad)
         printf("Pad: '%s', (%f %f), d=%f\n", C.name, u2mm(C.pad.x), u2mm(C.pad.y), u2mm(C.pad.diameter[LAYER_BOTTOM]));
      }
    }
  }
</pre>


<a name=200>
<h1>UL_PART</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attribute[]</tt>       </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>device</tt>       </td><td width=20><td><a href=#184>UL_DEVICE</a></td></tr>
<tr><td><tt>deviceset</tt>    </td><td width=20><td><a href=#185>UL_DEVICESET</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>PART_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>populate</tt>     </td><td width=20><td><a href=#169>int</a> (0=do not populate, 1=populate)</td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a>（<tt>PART_VALUE_LENGTH</tt>）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attributes()</tt>  </td><td width=20><td><a href=#177>UL_ATTRIBUTE</a>（见注）</td></tr>
<tr><td><tt>instances()</tt>  </td><td width=20><td><a href=#192>UL_INSTANCE</a>（见注）</td></tr>
<tr><td><tt>variants()</tt>   </td><td width=20><td><a href=#213>UL_VARIANT</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#205>UL_SCHEMATIC</a>，<a href=#207>UL_SHEET</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PART_NAME_LENGTH</tt>   </td><td width=20><td>推荐的 part 名称的最大长度（仅用于格式化输出）</td></tr>
<tr><td><tt>PART_VALUE_LENGTH</tt>  </td><td width=20><td>推荐的 part 值的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
成员 <tt>attribute[]</tt> 可用于查询 a UL_PART for 值 of a 给定的 属性（参见下面的第二个例子）。如果没有按名称给定的属性，或者如果该属性明确地为空，则返回空字串。
<p>
当遍历 UL_PART 的 <tt>attributes()</tt> 时，only the <tt>name</tt>, <tt>value</tt>, <tt>defaultvalue</tt> 以及 <tt>constant</tt> 成员s of the resulting UL_ATTRIBUTE 对象 are valid.
<p>
如果零件在图纸上下文中，循环成员 <tt>instances()</tt> 仅遍历 那些实例 that are actually used on that 图纸. 如果 part is in a 原理图上下文，所有 instances are 被遍历。
<h2>例</h2>
<pre>
SCHEMATIC(S) {
  S.parts(P) printf("Part: %s\n", P.name);
  }
</pre>
<pre>
SCHEMATIC(SCH) {
  SCH.parts(P) {
    if (P.attribute["REMARK"])
       printf("%s: %s\n", P.name, P.attribute["REMARK"]);
    }
  }
</pre>


<a name=201>
<h1>UL_PIN</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0</tt>, <tt>90</tt>, <tt>180</tt> and <tt>270</tt>）</td></tr>
<tr><td><tt>contact</tt>      </td><td width=20><td><a href=#182>UL_CONTACT</a> (deprecated, see note)</td></tr>
<tr><td><tt>direction</tt>    </td><td width=20><td><a href=#169>int</a>（<tt>PIN_DIRECTION_...</tt>）</td></tr>
<tr><td><tt>function</tt>     </td><td width=20><td><a href=#169>int</a>（<tt>PIN_FUNCTION_FLAG_...</tt>）</td></tr>
<tr><td><tt>length</tt>       </td><td width=20><td><a href=#169>int</a>（<tt>PIN_LENGTH_...</tt>）</td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>PIN_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>net</tt>          </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>route</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>CONTACT_ROUTE_...</tt>）</td></tr>
<tr><td><tt>swaplevel</tt>    </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>可见的</tt>      </td><td width=20><td><a href=#169>int</a>（<tt>PIN_VISIBLE_FLAG_...</tt>）</td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（连接点）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>circles()</tt>    </td><td width=20><td><a href=#180>UL_CIRCLE</a></td></tr>
<tr><td><tt>contacts()</tt>   </td><td width=20><td><a href=#182>UL_CONTACT</a>（见注）</td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#210>UL_SYMBOL</a>，<a href=#202>UL_PINREF</a>，<a href=#183>UL_CONTACTREF</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PIN_DIRECTION_NC</tt>  </td><td width=20><td>无连接</td></tr>
<tr><td><tt>PIN_DIRECTION_IN</tt>  </td><td width=20><td>输入</td></tr>
<tr><td><tt>PIN_DIRECTION_OUT</tt> </td><td width=20><td>输出 (totem-pole)</td></tr>
<tr><td><tt>PIN_DIRECTION_IO</tt>  </td><td width=20><td>输入/输出（双向）</td></tr>
<tr><td><tt>PIN_DIRECTION_OC</tt>  </td><td width=20><td>集电极开路</td></tr>
<tr><td><tt>PIN_DIRECTION_PWR</tt> </td><td width=20><td>电源（功率？？）输入引脚</td></tr>
<tr><td><tt>PIN_DIRECTION_PAS</tt> </td><td width=20><td>无源</td></tr>
<tr><td><tt>PIN_DIRECTION_HIZ</tt> </td><td width=20><td>高阻输出</td></tr>
<tr><td><tt>PIN_DIRECTION_SUP</tt> </td><td width=20><td>供电引脚</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PIN_FUNCTION_FLAG_NONE</tt>  </td><td width=20><td>无符号</td></tr>
<tr><td><tt>PIN_FUNCTION_FLAG_DOT</tt>   </td><td width=20><td>反相器符号</td></tr>
<tr><td><tt>PIN_FUNCTION_FLAG_CLK</tt>   </td><td width=20><td>时钟符号</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PIN_LENGTH_POINT</tt>  </td><td width=20><td>no wire</td></tr>
<tr><td><tt>PIN_LENGTH_SHORT</tt>  </td><td width=20><td>0.1 inch wire</td></tr>
<tr><td><tt>PIN_LENGTH_MIDDLE</tt> </td><td width=20><td>0.2 inch wire</td></tr>
<tr><td><tt>PIN_LENGTH_LONG</tt>   </td><td width=20><td>0.3 inch wire</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PIN_NAME_LENGTH</tt>   </td><td width=20><td>引脚名称推荐的最大长度（仅用于格式化输出）</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PIN_VISIBLE_FLAG_OFF</tt>   </td><td width=20><td>no name drawn</td></tr>
<tr><td><tt>PIN_VISIBLE_FLAG_PAD</tt>   </td><td width=20><td>焊盘 name drawn</td></tr>
<tr><td><tt>PIN_VISIBLE_FLAG_PIN</tt>   </td><td width=20><td>pin name drawn</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>CONTACT_ROUTE_ALL</tt>   </td><td width=20><td>必须明确地 route to 所有 contacts</td></tr>
<tr><td><tt>CONTACT_ROUTE_ANY</tt>   </td><td width=20><td>may route to any contact</td></tr>
</table>
<h2>注</h2>
循环成员 <tt>contacts()</tt> 遍历 <a href=#182>contacts</a> that have been assigned to the pin through a <a href=#40>CONNECT</a> 命令。This only makes sense in a UL_DEVICE 上下文 (in 其它cases the loop is empty).
<p>
数据成员 <tt>contact</tt> 返回 the <a href=#182>contact</a> that 已分配给引脚 through a <a href=#40>CONNECT</a> 命令。
<b><i>This member is deprecated! It 将 work for backwards compatibility and as long as only one 焊盘已被连接ed 到该引脚，but 将 cause a runtime error 当 used with a pin that is 连接ed 到 more than one 焊盘.</i></b>
<p>
The <tt>route</tt> 成员 also only makes sense in a UL_DEVICE 上下文 (in 其它cases set to 0).
<p>
The 坐标 (and layer, in case of an SMD) of the contact 返回ed by the <tt>contact</tt> 数据成员 依赖于 the 上下文 in which it is called:
<ul>
<li>if the pin is 衍生自 UL_PART that is used on a 图纸, and if there 为相应的 元素 on the board, the resulting contact 将 have the 坐标 as used on the board
<li>in 所有 其它cases, the 坐标 of the contact 将 be the same as defined in the 封装绘图
</ul>
数据成员 <tt>name</tt> 始终返回引脚名称 as it was defined in the 元件库, with any <tt>'@'</tt> 字符 for 引脚 with the 相同名称 left intact（细节参见 <a href=#77>PIN</a> 命令）。<br>
The <tt>texts</tt> 循环成员, on the otherhand, 返回引脚名称（如果可见）in the same way as it is displayed in the 当前的绘图类型。
<p>
数据成员 <tt>net</tt> 返回网络名称 to which this pin is 连接的（仅在 UL_SCHEMATIC 上下文中可用）。
<h2>例</h2>
<pre>
library(L) {
  L.符号s(S) {
    printf("符号: %s\n", S.name);
    S.pins(P) {
      printf("\tPin: %s, (%f %f)", P.name, u2mm(P.x), u2mm(P.y));
      if (P.direction == PIN_DIRECTION_IN)
         printf(" input");
      if ((P.function &amp; PIN_FUNCTION_FLAG_DOT) != 0)
         printf(" inverted");
      printf("\n");
      }
    }
  }
</pre>


<a name=202>
<h1>UL_PINREF</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>instance</tt>     </td><td width=20><td><a href=#192>UL_INSTANCE</a></td></tr>
<tr><td><tt>part</tt>         </td><td width=20><td><a href=#200>UL_PART</a></td></tr>·
<tr><td><tt>pin</tt>          </td><td width=20><td><a href=#201>UL_PIN</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#206>UL_SEGMENT</a>，<a href=#183>UL_CONTACTREF</a>
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.SHEET(SH) {
    printf("Sheet: %d\n", SH.number);
    SH.nets(N) {
      printf("\tNet: %s\n", N.name);
      N.segments(SEG) {
        SEG.pinrefs(P) {
          printf("连接ed 到: %s, %s, %s\n"，P.part.name, P.instance.name, P.pin.name);
          }
        }
      }
    }
  }
</pre>


<a name=203>
<h1>UL_POLYGON</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>isolate</tt>      </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>orphans</tt>      </td><td width=20><td><a href=#169>int</a> (0=off, 1=on)</td></tr>
<tr><td><tt>pour</tt>         </td><td width=20><td><a href=#169>int</a>（<tt>POLYGON_POUR_...</tt>）</td></tr>
<tr><td><tt>rank</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>spacing</tt>      </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>thermals</tt>     </td><td width=20><td><a href=#169>int</a> (0=off, 1=on)</td></tr>
<tr><td><tt>width</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>contours()</tt>   </td><td width=20><td><a href=#215>UL_WIRE</a>（见注）</td></tr>
<tr><td><tt>fillings()</tt>   </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#208>UL_SIGNAL</a>，<a href=#210>UL_SYMBOL</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>POLYGON_POUR_SOLID</tt>   </td><td width=20><td>solid</td></tr>
<tr><td><tt>POLYGON_POUR_HATCH</tt>   </td><td width=20><td>hatch</td></tr>
<tr><td><tt>POLYGidth=20><td>cutout</td></tr>
The <tt>contours()</tt> 和 <tt>fillings()</tt> 循环成员 遍历 the wires that are used to draw the 已计算的 多边it is part of a 信号 and the 多边形 has been 已计算的 by<a href=#83>RATSNEST</a> 命令。循环成员 <tt>wires()</tt> 始终 遍历 the 多边形 wires as they were drawn by the 用户. For an un已计算的 信号<tt>contours()</tt> does the same as <tt>wires()</tt>, and <tt>fillings()</tt> does nothing.
<p>
如果 <tt>contours()</tt> 循环成员 is called without a 第二个参数, it 遍历 所有 of the contour wires, regardless whether they belong to a positive 或 a negative 多边形. 如果您 are interested in getting the positive and negative contour wires separately, 您可以 call <tt>contours()</tt> with an additional 整数 参数（参见 the second 例子 below). The sign of that 参数 determines whether a positive 或 a negative 多边形 将 be 处理d, and 值 indicates the index of that 多边形. 如果没有 多边形 with the 给定的 index, the 语句 将 not be executed. Another advantage of this method is that you don't need to determine the beginning and end of a 特定的 多边形 您的self (by comparing 坐标). For any 给定的 index, the 语句 将 be executed for 所有 the wires of that 多边形. With the second 参数 <tt>0</tt> the 行为 is the same as without a second 参数.
<h2>Polygon width</h2>
当 using the 循环成员 to get the fill wires of a solid 多边形，make sure the <i>width</i> of the 多边形 不为零（actually it should be quite a bit 大于 zero, 例如 至少 the 输出设备的硬件分辨率 you are going to draw on). <b>填充ing a 多边形 with zero width may result in enormous amounts 已计算的 wie 最小的 editor resolution of 1/10000mm!</b>
<h2>Partial polygons</h2>
A 已计算的 信号may consist of several distinct parts (called <i>positive</i> 多边形s), each of which can 包含 extrusions (<i>negative</i> 多边形s) resulting from 其它对象 being subtracted from the 多边形. Negative 多边形s can again 包含 其它positive 多边形s and so on.
<p>
The wires looped through by <tt>contours()</tt> 始终 start with a positive 多边形. To 找出 where one partial 多边形 ends and the next one begins, simply store the (x1,y1) 坐标 of the 第一个 wire and check them against (x2,y2) of 每个 以下 wire. As soon as 这些 are equal, the last wire of a partial 多边形 has been found. It is also guaranteed that the 第二个点，x2,y2) of one wire is identical to the 第一个 point (x1,y1) of the next wire in that partial 多边形.
<p>
To 找出 where the "inside" and the "outside" of the 多边形 lays, take any contour wire and imagine looking from 它的 point (x1,y1) to (x2,y2）。多边形的“内部” is 始终 on the right side of the wire. 请注意 如果您 simply want to draw the 多边形 you won't need 所有这些细节。
<h2>例</h2>
<pre>
board(B) {
  B.SIGNAL(S) {
    S.polygons(P) {
      int x0, y0, first = 1;
      P.contours(W) {
        if (first) {
           // a new partial polygon is starting
           x0 = W.x1;
           y0 = W.y1;
           }
        // ...
        // do something with the wire
        // ...
        if (first)
           first = 0;
        else if (W.x2 == x0 &amp;&amp; W.y2 == y0) {
           // this was the last wire of the partial polygon，
		   // so the next wire (if any) 将 be the first wire
           // of the next partial polygon
           first = 1;
           }
        }
      }
    }
  }
</pre>
<p>
<pre>
board(B) {
  B.SIGNAL(S) {
    S.polygons(P) {
      // 处理 only the "positive" polygons:
      int i = 1;
      int active;
      do {
         active = 0;
         P.contours(W, i) {
           active = 1;
           // do something with the wire
           }
         i++;
         } while (active);
      }
    }
  }
</pre>


<a name=204>
<h1>UL_RECTANGLE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x1, y1</tt>       </td><td width=20><td><a href=#169>int</a>（左下角）</td></tr>
<tr><td><tt>x2, y2</tt>       </td><td width=20><td><a href=#169>int</a>（右上角）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#210>UL_SYMBOL</a>
<p>
<tt>angle</tt> 定义了矩形绕着它的中心逆时针旋转旋转了多少度。中心坐标由 <tt>(x1+x2)/2</tt> 和 <tt>(y1+y2)/2</tt> 给定。
<h2>例</h2>
<pre>
board(B) {
  B.rectangles(R) {
    printf("Rectangle: (%f %f), (%f %f)\n", u2mm(R.x1), u2mm(R.y1), u2mm(R.x2), u2mm(R.y2));
    }
  }
</pre>


<a name=205>
<h1>UL_SCHEMATIC</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>始终vectorfont</tt></td><td width=20><td><a href=#169>int</a>（<tt>始终_VECTOR_FONT_..., see note</tt>）</td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>grid</tt>         </td><td width=20><td><a href=#190>UL_GRID</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（见注）</td></tr>
<tr><td><tt>verticaltext</tt></td><td width=20><td><a href=#169>int</a>（<tt>VERTICAL_TEXT_...</tt>）</td></tr>
<tr><td><tt>xreflabel</tt>    </td><td width=20><td><a href=#171>字符串</a></td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>attributes()</tt>  </td><td width=20><td><a href=#177>UL_ATTRIBUTE</a>（见注）</td></tr>
<tr><td><tt>classes()</tt>    </td><td width=20><td><a href=#181>UL_CLASS</a></td></tr>
<tr><td><tt>layers()</tt>     </td><td width=20><td><a href=#195>UL_LAYER</a></td></tr>
<tr><td><tt>元件库()</tt>  </td><td width=20><td><a href=#196>UL_LIBRARY</a></td></tr>
<tr><td><tt>nets()</tt>       </td><td width=20><td><a href=#197>UL_NET</a></td></tr>
<tr><td><tt>parts()</tt>      </td><td width=20><td><a href=#200>UL_PART</a></td></tr>
<tr><td><tt>SHEET()</tt>     </td><td width=20><td><a href=#207>UL_SHEET</a></td></tr>
<tr><td><tt>variantdefs()</tt></td><td width=20><td><a href=#212>UL_VARIANTDEF</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#196>UL_LIBRARY</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>ALWAYS_VECTOR_FONT_GUI</tt></td><td width=20><td>始终vectorfont is set in the <a href=#16>用户 interface dialog</a></td></tr>
<tr><td><tt>ALWAYS_VECTOR_FONT_PERSISTENT</tt></td><td width=20><td>始终vectorfont is set persistent in this 原理图</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>VERTICAL_TEXT_UP</tt></td><td width=20><td>竖直文本的读取方向：up</td></tr>
<tr><td><tt>VERTICAL_TEXT_DOWN</tt></td><td width=20><td>竖直文本的读取方向：down</td></tr>
</table>
<h2>注</h2>
值 返回ed by <tt>始终vectorfont</tt> can be used in boolean 上下文 或 can be masked with the <tt>始终_VECTOR_FONT_...</tt> 常量 to determine the source of this setting,比如
<pre>
if (sch.始终vectorfont) {
   // 始终vectorfont is set in general
   }
if (sch.始终vectorfont &amp; 始终_VECTOR_FONT_GUI) {
   // 始终vectorfont is set in the 用户 interface
   }
</pre>
成员 <tt>name</tt> 返回完整的文件名称，包括目录。
<p>
成员 <tt>xreflabel</tt> 返回 the 格式化字串 used to display <a href=#61>对比参考标签</a>.
<p>
The <tt>attributes()</tt> 循环成员 遍历 the <i>global</i> 属性.
<h2>例</h2>
<pre>
SCHEMATIC(S) {
  S.parts(P) printf("Part: %s\n", P.name);
  }
</pre>


<a name=206>
<h1>UL_SEGMENT</h1>
<dl>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>junctions()</tt>  </td><td width=20><td><a href=#193>UL_JUNCTION</a>（见注）</td></tr>
<tr><td><tt>labels()</tt>     </td><td width=20><td><a href=#194>UL_LABEL</a></td></tr>
<tr><td><tt>pinrefs()</tt>    </td><td width=20><td><a href=#202>UL_PINREF</a>（见注）</td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a>（deprecated，见注）</td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#179>UL_BUS</a>，<a href=#197>UL_NET</a>
<h2>注</h2>
The <tt>junctions()</tt> and <tt>pinrefs()</tt> 循环成员s are only available for net 段s.
<p>
The <tt>texts()</tt> 循环成员 被曾用于旧版本的 EAGLE to 遍历 the labels of a 段, and is only present for compatibility. It 将 not deliver the text of 对比参考 labels at the 正确位置。Use the <tt>labels()</tt> 循环成员 to access a 段's labels.
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.SHEET(SH) {
    printf("Sheet: %d\n", SH.number);
    SH.nets(N) {
      printf("\tNet: %s\n", N.name);
      N.segments(SEG) {
        SEG.pinrefs(P) {
          printf("连接ed 到: %s, %s, %s\n", P.part.name, P.instance.name, P.pin.name);
          }
        }
      }
    }
  }
</pre>


<a name=207>
<h1>UL_SHEET</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>area</tt>         </td><td width=20><td><a href=#176>UL_AREA</a></td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>number</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>busses()</tt>     </td><td width=20><td><a href=#179>UL_BUS</a></td></tr>
<tr><td><tt>circles()</tt>    </td><td width=20><td><a href=#180>UL_CIRCLE</a></td></tr>
<tr><td><tt>dimensions()</tt> </td><td width=20><td><a href=#186>UL_DIMENSION</a></td></tr>
<tr><td><tt>frames()</tt>     </td><td width=20><td><a href=#188>UL_FRAME</a></td></tr>
<tr><td><tt>instances()</tt>  </td><td width=20><td><a href=#192>UL_INSTANCE</a></td></tr>
<tr><td><tt>nets()</tt>       </td><td width=20><td><a href=#197>UL_NET</a></td></tr>
<tr><td><tt>polygons()</tt>   </td><td width=20><td><a href=#203>UL_POLYGON</a></td></tr>
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#204>UL_RECTANGLE</a></td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#205>UL_SCHEMATIC</a>
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.SHEET(S) {
    printf("Sheet: %d\n", S.number);
    }
  }
</pre>


<a name=208>
<h1>UL_SIGNAL</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>鼠线hidden</tt>    </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>class</tt>         </td><td width=20><td><a href=#181>UL_CLASS</a></td></tr>
<tr><td><tt>name</tt>          </td><td width=20><td><a href=#171>字符串</a>（<tt>SIGNAL_NAME_LENGTH</tt>）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>contactrefs()</tt> </td><td width=20><td><a href=#183>UL_CONTACTREF</a></td></tr>
<tr><td><tt>polygons()</tt>   </td><td width=20><td><a href=#203>UL_POLYGON</a></td></tr>
<tr><td><tt>vias()</tt>       </td><td width=20><td><a href=#214>UL_VIA</a></td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>SIGNAL_NAME_LENGTH</tt>   </td><td width=20><td>信号名称推荐的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>例</h2>
<pre>
board(B) {
  B.SIGNAL(S) printf("Signal: %s\n", S.name);
  }
</pre>


<a name=209>
<h1>UL_SMD</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>dx[layer], dy[layer]</tt>   </td><td width=20><td><a href=#169>int</a> (size)</td></tr>
<tr><td><tt>flags</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>SMD_FLAG_...</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a>（见注）</td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>SMD_NAME_LENGTH</tt>）</td></tr>
<tr><td><tt>roundness</tt>    </td><td width=20><td><a href=#169>int</a>（见注）</td></tr>
<tr><td><tt>signal</tt>       </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（中心点，见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#198>UL_PACKAGE</a>，<a href=#182>UL_CONTACT</a>，<a href=#199>UL_PAD</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>SMD_FLAG_STOP</tt>   </td><td width=20><td>生成阻焊掩模</td></tr>
<tr><td><tt>SMD_FLAG_THERMALS</tt>         </td><td width=20><td>生成阻热（焊盘）</td></tr>
<tr><td><tt>SMD_FLAG_CREAM</tt>            </td><td width=20><td>生成 cream mask</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>SMD_NAME_LENGTH</tt>   </td><td width=20><td>推荐的 smd 的名称的最大长度（同<tt>CONTACT_NAME_LENGTH</tt>）</td></tr>
</table>
<h2>注</h2>
smd 的参数依赖于 the 上下文 in which it is accessed:
<ul>
<li>if the smd is 衍生自 a UL_LIBRARY 上下文，smd 的坐标 (<tt>x, y</tt>), <tt>angle</tt>, <tt>layer</tt> 以及 <tt>roundness</tt> 将 be the same as defined in the 封装 绘图
<li>in 所有 其它cases, they 将 have the 实际的值s from the board
</ul>
如果 <tt>dx</tt> and <tt>dy</tt> 数据成员 are called with an 可选的 layer index, the data for that layer is 返回ed 依照 the <a href=#136>设计规则</a>. Valid <a href=#195>layers</a> are LAYER_TOP, LAYER_TSTOP and LAYER_TCREAM for an smd in the Top layer, and LAYER_BOTTOM, LAYER_BSTOP and LAYER_BCREAM for an smd in the Bottom layer, 分别.
<p>
<tt>angle</tt> 定义了 how many 度 the smd is 逆时针旋转 around 它的 center.
<p>
值 返回ed by <tt>flags</tt> must be masked with the <tt>SMD_FLAG_...</tt> 常量 to determine the 单独的 标志 设置,比如
<pre>
if (smd.flags &amp; SMD_FLAG_STOP) {
   ...
   }
</pre>
请注意，如果您的 ULP 只是想要绘制对象，您不需要检查这些 标志s 明确地。The <tt>dx[]</tt> and <tt>dy[]</tt> 成员s 将返回 the proper data; 比如, if <tt>SMD_FLAG_STOP</tt> is set, <tt>dx[LAYER_TSTOP]</tt> 将返回 <tt>0</tt>, which should result in nothing being drawn in that layer. The <tt>flags</tt> 成员 is mainly for ULPs that 想要建立脚本文件 that 建立 元件库 对象.
<h2>例</h2>
<pre>
library(L) {
  L.packages(PAC) {
    PAC.contacts(C) {
      if (C.smd)
         printf("Smd: '%s', (%f %f), dx=%f, dy=%f\n", C.name, u2mm(C.smd.x), u2mm(C.smd.y), u2mm(C.smd.dx), u2mm(C.smd.dy));
      }
    }
  }
</pre>


<a name=210>
<h1>UL_SYMBOL</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>area</tt>         </td><td width=20><td><a href=#176>UL_AREA</a></td></tr>
<tr><td><tt>描述</tt>  </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>headline</tt>     </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>library</tt>      </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>name</tt>         </td><td width=20><td><a href=#171>字符串</a>（<tt>SYMBOL_NAME_LENGTH</tt>）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>circles()</tt>    </td><td width=20><td><a href=#180>UL_CIRCLE</a></td></tr>
<tr><td><tt>dimensions()</tt> </td><td width=20><td><a href=#186>UL_DIMENSION</a></td></tr>
<tr><td><tt>frames()</tt>     </td><td width=20><td><a href=#188>UL_FRAME</a></td></tr>
<tr><td><tt>rectangles()</tt> </td><td width=20><td><a href=#204>UL_RECTANGLE</a></td></tr>
<tr><td><tt>pins()</tt>       </td><td width=20><td><a href=#201>UL_PIN</a></td></tr>
<tr><td><tt>polygons()</tt>   </td><td width=20><td><a href=#203>UL_POLYGON</a></td></tr>
<tr><td><tt>texts()</tt>      </td><td width=20><td><a href=#211>UL_TEXT</a>（见注）</td></tr>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#189>UL_GATE</a>, <a href=#196>UL_LIBRARY</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>符号_NAME_LENGTH</tt>   </td><td width=20><td>推荐的符号名称的最大长度（仅用于格式化输出）</td></tr>
</table>
<h2>注</h2>
如果 UL_SYMBOL is 衍生自 a UL_INSTANCE, the <tt>texts()</tt> 成员 only 遍历 the non-detached texts of that instance.
<h2>例</h2>
<pre>
library(L) {
  L.符号s(S) printf("Sym: %s\n", S.name);
  }
</pre>


<a name=211>
<h1>UL_TEXT</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>align</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>ALIGN_...</tt>）</td></tr>
<tr><td><tt>angle</tt>        </td><td width=20><td><a href=#170>real</a>（<tt>0.0</tt>...<tt>359.9</tt>）</td></tr>
<tr><td><tt>font</tt>         </td><td width=20><td><a href=#169>int</a>（<tt>FONT_...</tt>）</td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>linedistance</tt> </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>mirror</tt>       </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>ratio</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>size</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>spin</tt>         </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（原点）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>wires()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>，<a href=#207>UL_SHEET</a>，<a href=#210>UL_SYMBOL</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>FONT_VECTOR</tt>   </td><td width=20><td>矢量字体</td></tr>
<tr><td><tt>FONT_PROPORTIONAL</tt>       </td><td width=20><td>proportional 字体</td></tr>
<tr><td><tt>FONT_FIXED</tt>              </td><td width=20><td>fixed 字体</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>ALIGN_BOTTOM_LEFT</tt>   </td><td width=20><td>bottom/left aligned</td></tr>
<tr><td><tt>ALIGN_BOTTOM_CENTER</tt> </td><td width=20><td>bottom/center aligned</td></tr>
<tr><td><tt>ALIGN_BOTTOM_RIGHT</tt>  </td><td width=20><td>bottom/right aligned</td></tr>
<tr><td><tt>ALIGN_CENTER_LEFT</tt>   </td><td width=20><td>center/left aligned</td></tr>
<tr><td><tt>ALIGN_CENTER</tt>        </td><td width=20><td>centered</td></tr>
<tr><td><tt>ALIGN_CENTER_RIGHT</tt>  </td><td width=20><td>center/right aligned</td></tr>
<tr><td><tt>ALIGN_TOP_LEFT</tt>      </td><td width=20><td>top/left aligned</td></tr>
<tr><td><tt>ALIGN_TOP_CENTER</tt>    </td><td width=20><td>top/center aligned</td></tr>
<tr><td><tt>ALIGN_TOP_RIGHT</tt>     </td><td width=20><td>top/right aligned</td></tr>
</table>
<h2>注</h2>
The <tt>wires()</tt> 循环成员 始终访问 the 单独的 wires the text is composed of 当 using the vector 字体, 即使 the 实际的 字体 is not <tt>FONT_VECTOR</tt>.
<p>
如果 UL_TEXT is 衍生自 a UL_ELEMENT 或 UL_INSTANCE 上下文, the member values 将 be 那些 of the 实际的 text as located 在电路板图中 或 图纸 绘图.
<h2>例</h2>
<pre>
board(B) {
  B.texts(T) {
    printf("Text: %s\n", T.value);
    }
  }
</pre>


<a name=212>
<h1>UL_VARIANTDEF</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>name</tt>        </td><td width=20><td><a href=#171>字符串</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#213>UL_VARIANT</a>，<a href=#205>UL_SCHEMATIC</a>，<a href=#178>UL_BOARD</a>
<h2>例</h2>
<pre>
SCHEMATIC(SCH) {
  SCH.variantdefs(VD) {
    printf("Variant: '%s'\n", VD.name);
    }
  }
</pre>


<a name=213>
<h1>UL_VARIANT</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>populate</tt>     </td><td width=20><td><a href=#169>int</a> (0=do not populate, 1=populate)</td></tr>
<tr><td><tt>value</tt>        </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>technology</tt>   </td><td width=20><td><a href=#171>字符串</a></td></tr>
<tr><td><tt>variantdef</tt>   </td><td width=20><td><a href=#212>UL_VARIANTDEF</a></td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#212>UL_VARIANTDEF</a>，<a href=#200>UL_PART</a>，<a href=#187>UL_ELEMENT</a>
<h2>例</h2>
<pre> 
SCHEMATIC(SCH) {
  SCH.parts(P) {
    P.variants(V) {
      printf("%s: %spopulate\n", V.variantdef.name, V.populate ? "" : "do not ");
      }
    }
  }
</pre>


<a name=214>
<h1>UL_VIA</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>diameter[layer]</tt>     </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>drill</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>drill符号</tt>  </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>end</tt>          </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>flags</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>VIA_FLAG_...</tt>）</td></tr>
<tr><td><tt>shape[layer]</tt> </td><td width=20><td><a href=#169>int</a>（<tt>VIA_SHAPE_...</tt>）</td></tr>
<tr><td><tt>start</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x, y</tt>         </td><td width=20><td><a href=#169>int</a>（中心点）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#208>UL_SIGNAL</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>VIA_FLAG_STOP</tt>   </td><td width=20><td>始终生成阻焊掩模</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>VIA_SHAPE_SQUARE</tt>   </td><td width=20><td>square</td></tr>
<tr><td><tt>VIA_SHAPE_ROUND</tt>    </td><td width=20><td>round</td></tr>
<tr><td><tt>VIA_SHAPE_OCTAGON</tt>  </td><td width=20><td>octagon</td></tr>
</table>
<h2>注</h2>
Tvia 依赖于 the layer for which they shall be retrieved，因为它们 may be 不同的 in 每个层 依赖于 the <a href=#136>设计规则</a>. 如果 one of the <a href=#195>layers</a> LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP 或 LAYER_BSTOP is 给定的 as the index to the 直径 或 形状 数据成员, the resulting 值 将 be 已计算的 依照e 设计规则. 如果 LAYER_VIAS is 给定的，the raw 值 as defined in the via  将 be 返回ed.
<p>
请注意，<tt>diameter</tt> 和 <tt>shape</tt> 将始终返回 the 直径或形状 that a via 将 have in the 给定的层，即使 that 特定的 via 不 cover that layer (or if that layer isn't used in the layer setup at all).
<p>
<tt>start</tt> 和 <tt>end</tt> 返回 层号 in which that via 起始和结束。<tt>start</tt> 的值将始终小于 <tt>end</tt> 的值。
<p>
<tt>drill符号</tt> 返回已分配给该钻孔直径的钻孔符号的号码（参见 the 手册 for 已定义的钻孔符号列表）。<tt>0</tt> 的值意味着没有符号分配给该钻孔直径。
<h2>例</h2>
<pre>
board(B) {
  B.SIGNAL(S) {
    S.vias(V) {
      printf("Via: (%f %f)\n", u2mm(V.x), u2mm(V.y));
      }
    }
  }
</pre>


<a name=215>
<h1>UL_WIRE</h1>
<dl>
<dt>
<b>数据成员</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>arc</tt>  </td><td width=20><td><a href=#175>UL_ARC</a></td></tr>
<tr><td><tt>cap</tt>          </td><td width=20><td><a href=#169>int</a>（<tt>CAP_...</tt>）</td></tr>
<tr><td><tt>curve</tt>        </td><td width=20><td><a href=#170>real</a></td></tr>
<tr><td><tt>layer</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>style</tt>        </td><td width=20><td><a href=#169>int</a>（<tt>WIRE_STYLE_...</tt>）</td></tr>
<tr><td><tt>width</tt>        </td><td width=20><td><a href=#169>int</a></td></tr>
<tr><td><tt>x1, y1</tt>       </td><td width=20><td><a href=#169>int</a>（起始点）</td></tr>
<tr><td><tt>x2, y2</tt>       </td><td width=20><td><a href=#169>int</a>（结束点）</td></tr>
</table>
<dt>
<b>Loop members</b>
<dd>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>pieces()</tt>      </td><td width=20><td><a href=#215>UL_WIRE</a>（见注）</td></tr>
</table>
</dl>
<b>另请参阅</b> <a href=#178>UL_BOARD</a>，<a href=#198>UL_PACKAGE</a>，<a href=#206>UL_SEGMENT</a>，<a href=#207>UL_SHEET</a>，<a href=#208>UL_SIGNAL</a>，<a href=#210>UL_SYMBOL</a>，<a href=#175>UL_ARC</a>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>CAP_FLAT</tt>  </td><td width=20><td>flat arc ends</td></tr>
<tr><td><tt>CAP_ROUND</tt>   </td><td width=20><td>round arc ends</td></tr>
<tr><td><tt>WIRE_STYLE_CONTINUOUS</tt>   </td><td width=20><td>continuous</td></tr>
<tr><td><tt>WIRE_STYLE_LONGDASH</tt>    </td><td width=20><td>long dash</td></tr>
<tr><td><tt>WIRE_STYLE_SHORTDASH</tt>   </td><td width=20><td>short dash</td></tr>
<tr><td><tt>WIRE_STYLE_DASHDOT</tt>     </td><td width=20><td>dash dot</td></tr>
</table>
<h2>Wire Style</h2>
A UL_WIRE that has a <i>style</i> otherthan <tt>WIRE_STYLE_CONTINUOUS</tt> can use the <tt>pieces()</tt> 循环成员 to access the 单独的 段s that constitute 例如 a dashed wire. 如果 <tt>pieces()</tt> is called for a UL_WIRE with <tt>WIRE_STYLE_CONTINUOUS</tt>, a single 段 将 be accessible which is just the same as the 原始的 UL_WIRE。The <tt>pieces()</tt> 循环成员 can't be called from a UL_WIRE that 自身 has been 返回ed by a call to <tt>pieces()</tt>（这将导致无穷递归）。
<h2>Arcs at Wire level</h2>
Arcs are basically wires, with a few additional properties. At the 第一个 level arcs are treated exactly the same as wires, meaning they have a start and an 端点, a width, layer and wire style. In addition to 这些 an arc, at the wire level, has a <i>cap</i> and a <i>curve</i> 参数. <i>cap</i> 定义了 whether the arc endings are round 或 flat, and <i>curve</i> 定义了 the "curvature" of the arc. The valid 范围 for <i>curve</i> is <tt>-360</tt>..<tt>+360</tt>, and 它的 值 means what part of a full circle the arc 包含. A 值 of <tt>90</tt>, 比如, 会导致 a <tt>90&deg;</tt> arc, while <tt>180</tt> 将 give you a semicircle. The 最大的 值 of <tt>360</tt> 只能 be reached theoretically, 因为由于 this 将 mean that the arc 包含 a full circle, which, because the start and 端点 have to lie on the circle, 将 have to have an infinitely large 直径. Positive values for <i>curve</i> mean that the arc is drawn in a mathematically positive sense (i.e. 逆时针). 如果 <i>curve</i> is <tt>0</tt>, the arc 为straight line ("no curvature"), which is actually a wire.
<p>
The <i>cap</i> 参数 only has a meaning for 实际的 arcs, and 将 始终 返回 <tt>CAP_ROUND</tt> for a straight wire.
<p>
Whether 或 not an UL_WIRE is an arc can be determined by checking the boolean 返回值 of the <tt>arc</tt> 数据成员。如果它返回 <tt>0</tt>, we have a straight wire, otherwise an arc. 如果 <tt>arc</tt> 返回一非零值 it may be further dereferenced to access the <a href=#175>UL_ARC</a> specific 参数 起始与结束角度，半径 and center point. 请注意 you may 只需要这些 additional 参数 如果您 are going to draw the arc 或 process it in 其它ways where the 实际的形状 is important.
<h2>例</h2>
<pre>
board(B) {
  B.wires(W) {
    printf("Wire: (%f %f) (%f %f)\n", u2mm(W.x1), u2mm(W.y1), u2mm(W.x2), u2mm(W.y2));
    }
  }
</pre>


<a name=216>
<h1>定义</h1>
The data items to be used in a 用户语言程序 must be defined before they can be used.
<p>
定义有三类：
<ul>
<li><a href=#217>常量的定义</a>
<li><a href=#218>变量的定义</a>
<li><a href=#219>函数的定义</a>
</ul>
The scope of a <i>constant</i> 或 <i>变量</i> 定义 goes from the line in which it has been defined to the end of the current <a href=#235>block</a>, 或 to the end of the User Language Program, if the 定义 appeared outside any block.
<p>
The scope of a <i>function</i> 定义 goes from the closing brace (<tt>}</tt>) of the 函数体 to the end of the 用户语言程序。


<a name=217>
<h1>常量的定义</h1>
<i>常量</i> 用关键字 <tt>enum</tt> 定义，比如
<pre>
enum { a, b, c };
</pre>
which 将定义三个常量 <tt>a</tt>, <tt>b</tt> and <tt>c</tt>, giving them the values <tt>0</tt>, <tt>1</tt> and <tt>2</tt>, 分别.
<p>
常量 may also be initialized to specific values, like
<pre>
enum { a, b = 5, c };
</pre>
where <tt>a</tt> 将 be <tt>0</tt>, <tt>b</tt> 将 be <tt>5</tt> and <tt>c</tt> 将 be <tt>6</tt>.


<a name=218>
<h1>变量的定义</h1>
<i>变量定义</i>的一般语法：
<pre>
[numeric] type 标识符 [= initializer][, ...];
</pre>
其中 <tt>type</tt> 为 <a href=#167>data</a> 或 <a href=#174>对象类型</a> 之一，<tt>标识符</tt> 为变量的名称， <tt>initializer</tt> 为可选的初始值。
<p>
Multiple 变量 定义 of 相同 <tt>type</tt> are 分隔 由 commas (<tt>,</tt>).
<p>
如果 <tt>标识符</tt> 后面是一对<a href=#160>方括号</a>（<tt>[]</tt>），这定义一个给定 <tt>type</tt> 的数组变量。数组的大小是运行时自动调整的。
<p>
可选的关键字 <tt>numeric</tt> can be used with <a href=#171>字符串</a>数组 to have them 按字母数字顺序 by the <a href=#273>sort()</a> 函数。
<p>
默认情况下，(if no <tt>initializer</tt> is present), <a href=#167>data 变量</a> are set to <tt>0</tt> (or <tt>""</tt>, in case of a string), and <a href=#174>对象变量</a> are "invalid".
<h2>例子</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>int i;</tt>   </td><td width=20><td>定义了 an <a href=#169>整数</a> 变量 named <tt>i</tt></td></tr>
<tr><td><tt>string s = "Hello";</tt> </td><td width=20><td>定义了 a <a href=#171>字符串</a> 变量 named <tt>s</tt> and initializes it to <tt>"Hello"</tt></td></tr>
<tr><td><tt>real a, b = 1.0, c;</tt> </td><td width=20><td>定义了 三个 <a href=#170>实数</a> 变量 named <tt>a</tt>, <tt>b</tt> and <tt>c</tt>, initializing <tt>b</tt> to 值 <tt>1.0</tt></td></tr>
<tr><td><tt>int n[] = { 1, 2, 3 };</tt> </td><td width=20><td>定义了 an array of <a href=#169>int</a>, initializing the 第一个 three 元素s to <tt>1</tt>, <tt>2</tt> and <tt>3</tt></td></tr>
<tr><td><tt>numeric string names[];</tt> </td><td width=20><td>定义了一个可以按照字母数字排序的<a href=#171>字符串</a>数组</td></tr>
<tr><td><tt>UL_WIRE w;</tt> </td><td width=20><td>定义了一个名为 <tt>w</tt> 的 <a href=#215>UL_WIRE</a> 对象</td></tr>
</table>
The members of array 元素s of <a href=#174>对象类型</a> 不能直接访问：
<pre>
UL_SIGNAL SIGNAL[];
...
UL_SIGNAL s = SIGNAL[0];
printf("%s", s.name);
</pre>


<a name=219>
<h1>函数定义</h1>
您可以编写您自己的用户语言函数，就像<a href=#249>内建函数</a>一样调用它们。
<p>
<i>函数定义</i>的一般语法：
<pre>
type 标识符(参数)
{
  语句
}
</pre>
where <tt>type</tt> is one of the <a href=#167>data</a> 或 <a href=#174>对象类型</a> 之一，<tt>标识符</tt> 为函数的名称，<tt>参数</tt> 为逗号分隔的参数定义列表，<tt>statement</tt> 为一系列的<a href=#234>语句</a>。
<p>
<tt>void</tt> 类型的函数不返回值。
<p>
函数必须在可调用<b>之前</b>定义，并且函数调用不能调用自身。
<p>
The 语句 in the 函数体 may modify the values of the 参数，但这 将 没有 任何影响 on the <a href=#233>函数调用</a> 的参数。
<p>
函数的执行可以由 <tt><a href=#243>return</a></tt> 语句终止。Without any <tt>return</tt> 语句 the function body 被执行 until it's closing brace (<tt>}</tt>).
<p>
A call to the <tt><a href=#268>exit()</a></tt> 函数 将 terminate the entire 用户语言程序.
<h2>The special function <tt>main()</tt></h2>
如果您的用户语言程序 包含 a 函数调用ed <tt>main()</tt>, that function 将 be 明确地 called as the 主函数，and it's 返回值 将 be 程序的<a href=#143>返回值</a>。
<p>
命令行 参数s are available to the 程序 through the global <a href=#248>内建的变量</a> <tt>argc</tt> and <tt>argv</tt>.
<h2>例</h2>
<pre>
int CountDots(string s)
{
  int dots = 0;
  for (int i = 0; s[i]; ++i)
      if (s[i] == '.')
         ++dots;
  return dots;
}
string dotted = "This.has.dots...";
output("test") {
  printf("Number of dots: %d\n", CountDots(dotted));
  }
</pre>


<a name=220>
<h1>运算符</h1>
下表列出了用户语言的全部运算符，in order of their precedence (<i>Unary</i> having the highest precedence, <i>逗号</i> the lowest):
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>Unary           </td><td width=20><td><tt><a href=#222>!</a> <a href=#221>~</a> <a href=#225>+ - ++ --</a></tt></td></tr>
<tr><td>Multiplicative  </td><td width=20><td><tt><a href=#225>* / %</a></tt></td></tr>
<tr><td>Additive        </td><td width=20><td><tt><a href=#225>+ -</a></tt></td></tr>
<tr><td>Shift           </td><td width=20><td><tt><a href=#221>&lt;&lt; &gt;&gt;</a></tt></td></tr>
<tr><td>Relational      </td><td width=20><td><tt><a href=#223>&lt; &lt;= &gt; &gt;=</a></tt></td></tr>
<tr><td>Equality        </td><td width=20><td><tt><a href=#223>== !=</a></tt></td></tr>
<tr><td>Bitwise AND     </td><td width=20><td><tt><a href=#221>&amp;</a></tt></td></tr>
<tr><td>Bitwise XOR     </td><td width=20><td><tt><a href=#221>^</a></tt></td></tr>
<tr><td>Bitwise OR      </td><td width=20><td><tt><a href=#221>|</a></tt></td></tr>
<tr><td>Logical AND     </td><td width=20><td><tt><a href=#222>&amp;&amp;</a></tt></td></tr>
<tr><td>Logical OR      </td><td width=20><td><tt><a href=#222>||</a></tt></td></tr>
<tr><td>Conditional     </td><td width=20><td><tt><a href=#224>?:</a></tt></td></tr>
<tr><td>赋值     </td><td width=20><td><tt><a href=#225>= *= /= %= += -=</a> <a href=#221>&amp;= ^= |= &lt;&lt;= &gt;&gt;=</a></tt></td></tr>
<tr><td>逗号           </td><td width=20><td><tt><a href=#224>,</a></tt></td></tr>
</table>
<p>
Associativity is <b>从左到右</b> for 所有 运算符, except for <i>Unary</i>, <i>Conditional</i> and <i>Assignment</i>, which are <b>right to left</b> associative.
<p>
The normal 运算符 precedence can be altered by the use of <a href=#161>圆括号</a>.


<a name=221>
<h1>位运算符</h1>
位运算符 work only with 数据类型 <tt><a href=#168>char</a></tt> 和 <tt><a href=#169>int</a></tt>.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>Unary</b>   </td><td width=20><td></td></tr>
<tr><td><tt>~</tt>          </td><td width=20><td>Bitwise (1's) complement</td></tr>
<tr><td><b>Binary</b>  </td><td width=20><td></td></tr>
<tr><td><tt>&lt;&lt;</tt>         </td><td width=20><td>左移</td></tr>
<tr><td><tt>&gt;&gt;</tt>         </td><td width=20><td>右移</td></tr>
<tr><td><tt>&amp;</tt>          </td><td width=20><td>Bitwise AND</td></tr>
<tr><td><tt>^</tt>          </td><td width=20><td>Bitwise XOR</td></tr>
<tr><td><tt>|</tt>          </td><td width=20><td>Bitwise OR</td></tr>
<tr><td><b>Assignment</b>  </td><td width=20><td></td></tr>
<tr><td><tt>&amp;=</tt>         </td><td width=20><td>Assign bitwise AND</td></tr>
<tr><td><tt>^=</tt>         </td><td width=20><td>Assign bitwise XOR</td></tr>
<tr><td><tt>|=</tt>         </td><td width=20><td>Assign bitwise OR</td></tr>
<tr><td><tt>&lt;&lt;=</tt>        </td><td width=20><td>赋值左移</td></tr>
<tr><td><tt>&gt;&gt;=</tt>        </td><td width=20><td>赋值右移</td></tr>
</table>


<a name=222>
<h1>逻辑运算符</h1>
逻辑运算符 work with <a href=#227>表达式</a> of 任何数据类型。
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>Unary</b>   </td><td width=20><td></td></tr>
<tr><td><tt>!</tt>          </td><td width=20><td>Logical NOT</td></tr>
<tr><td><b>Binary</b>  </td><td width=20><td></td></tr>
<tr><td><tt>&amp;&amp;</tt>         </td><td width=20><td>Logical AND</td></tr>
<tr><td><tt>||</tt>         </td><td width=20><td>Logical OR</td></tr>
</table>
<p>
Using a <tt><a href=#171>字符串</a></tt> 表达式 with a 逻辑运算符 检查字符串是否为空。
<p>
Using an <a href=#174>对象类型</a> with a 逻辑运算符 检查对象是否包含有效数据。


<a name=223>
<h1>比较运算符</h1>
比较运算符 work with <a href=#227>表达式</a> of 任何数据类型, except <a href=#174>对象类型</a>.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>&lt;</tt>          </td><td width=20><td>小于</td></tr>
<tr><td><tt>&lt;=</tt>         </td><td width=20><td>小于或等于</td></tr>
<tr><td><tt>&gt;</tt>          </td><td width=20><td>大于</td></tr>
<tr><td><tt>&gt;=</tt>         </td><td width=20><td>大于或等于</td></tr>
<tr><td><tt>==</tt>         </td><td width=20><td>等于</td></tr>
<tr><td><tt>!=</tt>         </td><td width=20><td>不等于</td></tr>
</table>


<a name=224>
<h1>评估运算符</h1>
评估运算符 用于 评估 <a href=#227>表达式</a> based on a condition, 或 to group a sequence of 表达式 and have them 评估d as one 表达式.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>?:</tt>         </td><td width=20><td>Conditional</td></tr>
<tr><td><tt>,</tt>          </td><td width=20><td>逗号</td></tr>
</table>
<p>
<i>条件</i> 运算符 用于 make a decision within an 表达式,比如
<pre>
int a;
// ...code that calculates 'a'
string s = a ? "True" : "False";
</pre>
which is basically the same as
<pre>
int a;
string s;
// ...code that calculates 'a'
if (a)
   s = "True";
else
   s = "False";
</pre>
but the advantage of the 有条件的 运算符 is that it can be used in an 表达式.
<p>
<i>逗号</i> 运算符 用于 评估 a sequence of 表达式 from left to right, using the type and 值 of the right operand as the result.
<p>
请注意 参数s in a 函数调用 as well as multiple 变量 declarations also use commas as delimiters, but in that case this is <b>not</b> a 逗号 运算符!


<a name=225>
<h1>算术运算符</h1>
算术运算符 work with 数据类型
<tt><a href=#168>char</a></tt>，<tt><a href=#169>int</a></tt> 和 <tt><a href=#170>real</a></tt> (except for <tt>++</tt>, <tt>--</tt>, <tt>%</tt> and <tt>%=</tt>).
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>Unary</b>   </td><td width=20><td></td></tr>
<tr><td><tt>+</tt>          </td><td width=20><td>Unary plus</td></tr>
<tr><td><tt>-</tt>          </td><td width=20><td>Unary minus</td></tr>
<tr><td><tt>++</tt>         </td><td width=20><td>Pre- 或 postincrement</td></tr>
<tr><td><tt>--</tt>         </td><td width=20><td>Pre- 或 postdecrement</td></tr>
<tr><td><b>Binary</b>  </td><td width=20><td></td></tr>
<tr><td><tt>*</tt>          </td><td width=20><td>Multiply</td></tr>
<tr><td><tt>/</tt>          </td><td width=20><td>Divide</td></tr>
<tr><td><tt>%</tt>          </td><td width=20><td>Remainder (modulus)</td></tr>
<tr><td><tt>+</tt>          </td><td width=20><td>二进制 plus</td></tr>
<tr><td><tt>-</tt>          </td><td width=20><td>二进制 minus</td></tr>
<tr><td><b>Assignment</b> </td><td width=20><td></td></tr>
<tr><td><tt>=</tt>          </td><td width=20><td>Simple assignment</td></tr>
<tr><td><tt>*=</tt>         </td><td width=20><td>Assign product</td></tr>
<tr><td><tt>/=</tt>         </td><td width=20><td>Assign quotient</td></tr>
<tr><td><tt>%=</tt>         </td><td width=20><td>Assign remainder (modulus)</td></tr>
<tr><td><tt>+=</tt>         </td><td width=20><td>Assign sum</td></tr>
<tr><td><tt>-=</tt>         </td><td width=20><td>Assign difference</td></tr>
</table>
<p>
<b>另请参阅</b> <a href=#226>字符串运算符</a>


<a name=226>
<h1>字符串运算符</h1>
字符串运算符 work with 数据类型 <tt><a href=#168>char</a></tt>，<tt><a href=#169>int</a></tt> and <tt><a href=#171>字符串</a></tt>. The left operand must 始终 be of type <tt><a href=#171>字符串</a></tt>.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>Binary</b>  </td><td width=20><td></td></tr>
<tr><td><tt>+</tt>          </td><td width=20><td>Concatenation</td></tr>
<tr><td><b>Assignment</b> </td><td width=20><td></td></tr>
<tr><td><tt>=</tt>          </td><td width=20><td>Simple assignment</td></tr>
<tr><td><tt>+=</tt>         </td><td width=20><td>Append to string</td></tr>
</table>
<p>
The <tt>+</tt> 运算符 concatenates 两个 字符串, 或 adds a 字符 to the end of a string and 返回 the resulting string.
<p>
The <tt>+=</tt> 运算符 appends a string 或 a 字符 to the end of a 给定的字符串.
<p>
<b>另请参阅</b> <a href=#225>算术 运算符</a>


<a name=227>
<h1>表达式</h1>
An <i>表达式</i> can be one of the 以下:
<ul>
<li><a href=#228>算术 表达式</a>
<li><a href=#229>赋值表达式</a>
<li><a href=#230>字符串表达式</a>
<li><a href=#231>逗号 表达式</a>
<li><a href=#232>条件表达式</a>
<li><a href=#233>函数调用</a>
</ul>
表达式 can be grouped using <a href=#161>圆括号</a>, and may be recursive, meaning that an 表达式 can consist of sub表达式.


<a name=228>
<h1>算术 表达式</h1>
An <i>算术 表达式</i> is any 组合 of numeric operands and an <a href=#225>算术运算符</a> 或 a <a href=#221>bitwise 运算符</a>.
<h2>例</h2>
<pre>
a + b
c++
m &lt;&lt; 1
</pre>


<a name=229>
<h1>赋值表达式</h1>
An <i>赋值表达式</i> 包含 a 变量 on the left side of an <a href=#225>赋值运算符</a>, and an 表达式 on the right side.
<h2>例子</h2>
<pre>
a = x + 42
b += c
s = "Hello"
</pre>


<a name=230>
<h1>字符串表达式</h1>
A <i>字符串表达式</i> is any 组合 of <a href=#171>字符串</a> 和 <a href=#168>char</a> operands and a <a href=#226>字符串运算符</a>。
<h2>例子</h2>
<pre>
s + ".brd"
t + 'x'
</pre>


<a name=231>
<h1>逗号表达式</h1>
A <i>逗号表达式</i> 为 sequence of 表达式, delimited by the <a href=#224>逗号 运算符</a>
<p>
逗号 表达式 are 评估d left to right, and the result of a 逗号 表达式 is the type and 值 of the rightmost 表达式.
<h2>例</h2>
<pre>
i++, j++, k++
</pre>


<a name=232>
<h1>条件表达式</h1>
A <i>条件表达式</i> uses the <a href=#224>条件运算符</a> to make a decision within an 表达式.
<h2>例</h2>
<pre>
int a;
// ...code that calculates 'a'
string s = a ? "True" : "False";
</pre>


<a name=233>
<h1>函数调用</h1>
A <i>函数调用</i> transfers the 程序 flow to a <a href=#219>用户定义的函数</a> 或 a <a href=#249>内建的函数</a>。形式参数定义在 the <a href=#219>函数定义</a> are replaced with the values of the 表达式 used as the 实际的参数 of the 函数调用.
<h2>例</h2>
<pre>
int p = strchr(s, 'b');
</pre>


<a name=234>
<h1>语句</h1>
<i>语句</i> 可以为下列之一：
<ul>
<li><a href=#235>复合语句</a>
<li><a href=#237>控制语句</a>
<li><a href=#236>表达式语句</a>
<li><a href=#313>内建的语句</a>
<li><a href=#217>常量定义</a>
<li><a href=#218>变量定义</a>
</ul>
语句 specify the flow of control as a 用户语言程序的执行。In absence of specific 控制语句, 语句 are executed sequentially in the order of appearance in the ULP 文件。


<a name=235>
<h1>复合语句</h1>
A <i>复合语句</i> (also known as <i>block</i>) 为 list (possibly empty) of 语句 enclosed in matching 大括号（花括号） (<tt>{}</tt>）。Syntactically, a block can be considered to be a 单个语句，but it also controls the scoping of 标识符. An <a href=#152>标识符</a> declared within a block has a scope starting at the point of declaration and ending at the closing brace.
<p>
复合语句 can be nested to any depth.


<a name=236>
<h1>表达式语句</h1>
An <i>表达式语句</i> is any <a href=#227>表达式</a> followed by a <a href=#164>分号</a>。
<p>
An 表达式语句 被执行 by evaluating the 表达式. All side effects of this evaluation are completed before the next <a href=#234>语句</a> 被执行。Most 表达式语句 are <a href=#229>assignments</a> 或 <a href=#233>函数调用</a>。
<p>
一个特殊的情形为 <i>空语句</i>, 只包含一个<a href=#164>分号</a>。空语句 does nothing, but it may be useful in situations where the ULP 语法 expects a 语句 but 您的 程序 does not need one.


<a name=237>
<h1>控制语句</h1>
<i>控制语句</i>用于控制程序 program flow.
<p>
Iteration 语句 are
<pre>
<a href=#240>do...while</a>
<a href=#241>for</a>
<a href=#245>while</a>
</pre>
Selection 语句 are
<pre>
<a href=#242>if...else</a>
<a href=#244>switch</a>
</pre>
跳转语句：
<pre>
<a href=#238>break</a>
<a href=#239>continue</a>
<a href=#243>return</a>
</pre>


<a name=238>
<h1>break</h1>
<i>break</i> 语句的一般语法：
<pre>
break;
</pre>
and immediately terminates the <b>nearest</b> enclosing <a href=#240>do...while</a>，<a href=#241>for</a>，<a href=#244>switch</a> 或 <a href=#245>while</a> 语句. This also applies to <i>循环成员s</i> of <a href=#174>对象类型</a>.
<p>
由于所有这些语句 can be intermixed and nested to any depth，take care to ensure that 您的 <tt>break</tt> exits from the correct 语句.


<a name=239>
<h1>continue</h1>
<i>continue</i> 语句的一般语法：
<pre>
continue;
</pre>
and immediately transfers control to the test condition of the <b>nearest</b> enclosing <a href=#240>do...while</a>，<a href=#245>while</a>, or <a href=#241>for</a> 语句, 或 to the increment 表达式 of the <b>nearest</b> enclosing <a href=#245>for</a> 语句.
<p>
由于所有这些语句 can be intermixed and nested to any depth, take care to ensure that 您的 <tt>continue</tt> affects the correct 语句.


<a name=240>
<h1>do...while</h1>
<i>do...while</i> 语句的一般语法：
<pre>
do 语句 while (condition);
</pre>
and executes the <tt>statement</tt> until the <tt>condition</tt> 表达式变为 0。
<p>
The <tt>condition</tt> is tested <b>after</b> the 第一个 execution of <tt>statement</tt>, which means that the 语句 is 始终执行至少一次。
<p>
如果没有 <tt><a href=#238>break</a></tt> 或 <tt><a href=#243>return</a></tt> inside the <tt>statement</tt>, the <tt>statement</tt> must affect 值 of the <tt>condition</tt>, 或 <tt>condition</tt> 自身 必须改变during evaluation 以便 avoid an endless loop.
<h2>例</h2>
<pre>
string s = "Trust no one!";
int i = -1;
do {
   ++i;
   } while (s[i]);
</pre>


<a name=241>
<h1>for</h1>
<i>for</i> 语句的一般语法：
<pre>
for ([init]; [test]; [inc]) 语句
</pre>
and performs the 以下步骤：
<ol>
<li>如果 an 初始化的表达式 <tt>init</tt> is present, it 被执行。
<li>如果 a <tt>test</tt> 表达式 is present, it 被执行. 如果结果不为零（or 如果没有 <tt>test</tt> 表达式 at all), the <tt>statement</tt> 被执行.
<li>如果 an <tt>inc</tt> 表达式 is present, it 被执行。
<li>Finally control 返回 to step 2.
</ol>
如果没有 <tt><a href=#238>break</a></tt> 或 <tt><a href=#243>return</a></tt> inside the <tt>statement</tt>, the <tt>inc</tt> 表达式 (or the <tt>statement</tt>) must affect 值 of the <tt>test</tt> 表达式, 或 <tt>test</tt> 自身 must 改变during evaluation 以便 avoid an endless loop.
<p>
初始化表达式 <tt>init</tt> normally initializes 一个或多个 loop counters. It may also 定义 a new 变量 as a loop counter. The scope of such a 变量 is valid until the end of the active block.
<h2>例</h2>
<pre>
string s = "Trust no one!";
int sum = 0;
for (int i = 0; s[i]; ++i)
    sum += s[i]; // sums up the 字符 in s
</pre>


<a name=242>
<h1>if...else</h1>
<i>if...else</i> 语句的一般语法：
<pre>
if (表达式)
   t_statment
[else
   f_statment]
</pre>
条件<tt>表达式</tt> 被评估，and 如果它的值不为零，则执行<tt>t_statment</tt>。否则<tt>f_statment</tt> is executed in case there is an <tt>else</tt> clause.
<p>
An <tt>else</tt> clause is 始终 matched to the last encountered <tt>if</tt> without an <tt>else</tt>. 如果 this is not what you want, 您需要使用<a href=#162>大括号（花括号）</a> 对语句分组，as in
<pre>
if (a == 1) {
   if (b == 1)
      printf("a == 1 and b == 1\n");
   }
else
   printf("a != 1\n");
</pre>


<a name=243>
<h1>return</h1>
A <a href=#219>function</a> with a 返回类型 other than <tt>void</tt> 必须包含至少一个 <i>return</i> 语句 with the 语法
<pre>
return 表达式;
</pre>
where <tt>表达式</tt> must 评估 to a type that is compatible with the 函数的返回类型。<tt>表达式</tt>的值 is 值 返回ed by the function.
<p>
如果函数为 <tt>void</tt> 类型，a <tt>return</tt> 语句 without an <tt>表达式</tt> 可以用于 返回 from the 函数调用。


<a name=244>
<h1>switch</h1>
<i>switch</i> 语句的一般语法：
<pre>
switch (sw_exp) {
  case case_exp: case_statment
  ...
  [default: def_statment]
  }
</pre>
and allows for the transfer of control to one of several <tt>case</tt>-labeled 语句, 依赖于 <tt>sw_exp</tt> 的值 (which must be of 整数类型）。
<p>
Any <tt>case_statment</tt> can be labeled by 一个或多个 <tt>case</tt> labels. The <tt>case_exp</tt> of each <tt>case</tt> 标签 must 评估 to a constant 整数 which is unique within it's enclosing <tt>switch</tt> 语句.
<p>
There can also be at most one <tt>缺省的</tt> 标签.
<p>
After evaluating <tt>sw_exp</tt>, the <tt>case_exp</tt> are checked for a match. 如果 a match is found, control passes to the <tt>case_statment</tt> with the matching <tt>case</tt> 标签.
<p>
如果 no match is found and there 为<tt>缺省的</tt> 标签, control passes to <tt>def_statment</tt>. Otherwise none of the 语句 in the <tt>switch</tt> 被执行.
<p>
程序执行 is not affected 当 <tt>case</tt> and <tt>缺省的</tt> 标签s are encountered. Control simply passes through the labels to the 以下 语句.
<p>
To stop execution at the end of 一组语句 for a 特定的 <tt>case</tt>, use the <a href=#238>break</a> 语句.
<h2>例</h2>
<pre>
string s = "Hello World";
int vowels = 0, others = 0;
for (int i = 0; s[i]; ++i)
    switch (toupper(s[i])) {
      case 'A':
      case 'E':
      case 'I':
      case 'O':
      case 'U': ++vowels;
                break;
      default: ++others;
      }
printf("There are %d vowels in '%s'\n", vowels, s);
</pre>


<a name=245>
<h1>while</h1>
<i>while</i> 语句的一般语法：
<pre>
while (condition) statment
</pre>
and executes the <tt>statement</tt> as long as the <tt>condition</tt> 表达式 is not zero.
<p>
The <tt>condition</tt> is tested <b>before</b> the 第一个 可能 execution of <tt>statement</tt>, which means that the 语句 may never be executed if <tt>condition</tt> is initially zero.
<p>
如果没有 <tt><a href=#238>break</a></tt> 或 <tt><a href=#243>return</a></tt> inside the <tt>statement</tt>, the <tt>statement</tt> must affect 值 of the <tt>condition</tt>, 或 <tt>condition</tt> 自身 must 改变 during evaluation 以便 avoid an endless loop.
<h2>例</h2>
<pre>
string s = "Trust no one!";
int i = 0;
while (s[i])
      ++i;
</pre>


<a name=246>
<h1>Builtins</h1>
Builtins are <i>常量</i>, <i>变量</i>, <i>函数</i> 及 <i>语句</i> that provide additional 信息 and allow for data manipulations.
<ul>
<li><a href=#247>内建的常量</a>
<li><a href=#248>内建的变量</a>
<li><a href=#249>内建的函数</a>
<li><a href=#313>内建的语句</a>
</ul>


<a name=247>
<h1>内建的常量</h1>
<i>内建的常量</i> 用于提供关于对象参数的信息，比如推荐的名称的最大长度, 标志s 等等。
<p>
很多 <a href=#174>对象类型</a> 具有它们自己的 <b>常量</b> section which lists the 内建常量 for that 特定的对象（参见 e.g. <a href=#201>UL_PIN</a>).
<p>
以下内建常量 are defined in addition to the ones listed for the various 对象类型:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>EAGLE_VERSION</tt> </td><td width=20><td>EAGLE 程序版本号 (<a href=#169>int</a>）</td></tr>
<tr><td><tt>EAGLE_RELEASE</tt> </td><td width=20><td>EAGLE 程序发布号 (<a href=#169>int</a>）</td></tr>
<tr><td><tt>EAGLE_SIGNATURE</tt> </td><td width=20><td>a <a href=#171>字符串</a> 包含 EAGLE 程序名称，版本及版权信息</td></tr>
<tr><td><tt>EAGLE_PATH</tt> </td><td width=20><td>a <a href=#171>字符串</a> 包含 EAGLE 可执行文件的完整路径</td></tr>
<tr><td><tt>EAGLE_DIR</tt> </td><td width=20><td>a <a href=#171>字符串</a> 包含 EAGLE 的安装目录 (<tt>$EAGLEDIR</tt>）</td></tr>
<tr><td><tt>EAGLE_HOME</tt> </td><td width=20><td>a <a href=#171>字符串</a> 包含用户的 home 目录 当 启动 EAGLE (<tt>$HOME</tt>）</td></tr>
<tr><td><tt>OS_SIGNATURE</tt> </td><td width=20><td>a <a href=#171>字符串</a> 包含操作系统签名 (e.g. Mac..., Windows... 或 Linux)</td></tr>
<tr><td><tt>REAL_EPSILON</tt> </td><td width=20><td>the 最小的 positive <a href=#170>real</a> number such that <tt>1.0 + REAL_EPSILON != 1.0</tt></td></tr>
<tr><td><tt>REAL_MAX</tt> </td><td width=20><td>the largest possible <a href=#170>real</a> 值</td></tr>
<tr><td><tt>REAL_MIN</tt> </td><td width=20><td>the 最小的 possible (positive!) <a href=#170>real</a> 值<br>the 最小的 representable number is <tt>-REAL_MAX</tt></td></tr>
<tr><td><tt>INT_MAX</tt> </td><td width=20><td>the largest possible <a href=#169>int</a> 值</td></tr>
<tr><td><tt>INT_MIN</tt> </td><td width=20><td>the 最小的 possible <a href=#169>int</a> 值</td></tr>
<tr><td><tt>PI</tt> </td><td width=20><td>值 of "pi" (3.14..., <a href=#170>real</a>）</td></tr>
<tr><td><tt>usage</tt> </td><td width=20><td>a <a href=#171>字符串</a> 包含 the text from the <tt><a href=#150>#usage</a></tt> 指令</td></tr>
</table>
<p>
这些内建常量包含在 <a href=#14>目录对话框</a> 中定义的目录路径, with any of the 特殊变量 (<tt>$HOME</tt> and <tt>$EAGLEDIR</tt>) replaced by 它们的实际值。由于each path can 包含几个目录, 这些常量 are <a href=#171>字符串</a> arrays with an 单独的 目录 in each member. The 第一个 empty member marks the end of the path:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>path_lbr[]</tt> </td><td width=20><td>元件库</td></tr>
<tr><td><tt>path_dru[]</tt> </td><td width=20><td>设计规则</td></tr>
<tr><td><tt>path_ulp[]</tt> </td><td width=20><td>用户语言程序</td></tr>
<tr><td><tt>path_scr[]</tt> </td><td width=20><td>脚本</td></tr>
<tr><td><tt>path_cam[]</tt> </td><td width=20><td>CAM 作业</td></tr>
<tr><td><tt>path_epf[]</tt> </td><td width=20><td>工程</td></tr>
</table>
<p>
当 using 这些 常量 to build a 完整的文件名称，您需要使用目录分隔符，比如：
<pre>
string s = path_lbr[0] + '/' + "mylib.lbr";
</pre>
<p>
The 元件库 that are 当前 in use through the <a href=#104>USE</a> 命令：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>used_libraries[]</tt> </td><td width=20><td></td></tr>
</table>


<a name=248>
<h1>内建的变量</h1>
<i>内建的变量</i> 用于在运行时提供信息。
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>int argc</tt> </td><td width=20><td>number of 参数s 给定的 to the <a href=#92>RUN</a> 命令</td></tr>
<tr><td><tt>string argv[]</tt>      </td><td width=20><td>参数s 给定的 to the RUN 命令 (<tt>argv[0]</tt> is the 完整的 ULP 文件名）</td></tr>
</table>


<a name=249>
<h1>内建的函数</h1>
<i>内建的函数</i> 用于执行特定的任务，比如打印格式化的字符串，排序数据数组 或 the like.
<p>
您也可以编写您自己的 <a href=#219>函数</a> 并使用它们构建您的用户语言程序。
<p>
内建的函数分为以下几类：
<ul>
<li><a href=#250>字符函数</a>
<li><a href=#253>文件操作函数</a>
<li><a href=#260>数学函数</a>
<li><a href=#265>杂项函数</a>
<li><a href=#277>网络函数</a>
<li><a href=#281>打印函数</a>
<li><a href=#284>字符串函数</a>
<li><a href=#298>时间函数</a>
<li><a href=#302>对象函数</a>
<li><a href=#308>XML 函数</a>
</ul>
Alphabetical reference of 所有内建函数:
<ul>
<li><a href=#261>abs()</a>
<li><a href=#263>acos()</a>
<li><a href=#263>asin()</a>
<li><a href=#263>atan()</a>
<li><a href=#262>ceil()</a>
<li><a href=#266>cfgget()</a>
<li><a href=#266>cfgset()</a>
<li><a href=#303>clrgroup()</a>
<li><a href=#267>country()</a>
<li><a href=#263>cos()</a>
<li><a href=#268>exit()</a>
<li><a href=#264>exp()</a>
<li><a href=#269>fdlsignature()</a>
<li><a href=#256>filedir()</a>
<li><a href=#254>fileerror()</a>
<li><a href=#256>fileext()</a>
<li><a href=#255>fileglob()</a>
<li><a href=#256>filename()</a>
<li><a href=#259>fileread()</a>
<li><a href=#256>filesetext()</a>
<li><a href=#257>filesize()</a>
<li><a href=#257>filetime()</a>
<li><a href=#262>floor()</a>
<li><a href=#262>frac()</a>
<li><a href=#276>inch2u()</a>
<li><a href=#304>ingroup()</a>
<li><a href=#251>isalnum()</a>
<li><a href=#251>isalpha()</a>
<li><a href=#251>iscntrl()</a>
<li><a href=#251>isdigit()</a>
<li><a href=#251>isgraph()</a>
<li><a href=#251>islower()</a>
<li><a href=#251>isprint()</a>
<li><a href=#251>ispunct()</a>
<li><a href=#251>isspace()</a>
<li><a href=#251>isupper()</a>
<li><a href=#251>isxdigit()</a>
<li><a href=#270>language()</a>
<li><a href=#264>log()</a>
<li><a href=#264>log10()</a>
<li><a href=#271>lookup()</a>
<li><a href=#261>max()</a>
<li><a href=#276>mic2u()</a>
<li><a href=#276>mil2u()</a>
<li><a href=#261>min()</a>
<li><a href=#276>mm2u()</a>
<li><a href=#278>neterror()</a>
<li><a href=#279>netget()</a>
<li><a href=#280>netpost()</a>
<li><a href=#272>palette()</a>
<li><a href=#264>pow()</a>
<li><a href=#282>printf()</a>
<li><a href=#262>round()</a>
<li><a href=#305>setgroup()</a>
<li><a href=#306>setvariant()</a>
<li><a href=#263>sin()</a>
<li><a href=#273>sort()</a>
<li><a href=#283>sprintf()</a>
<li><a href=#264>sqrt()</a>
<li><a href=#274>status()</a>
<li><a href=#285>strchr()</a>
<li><a href=#286>strjoin()</a>
<li><a href=#287>strlen()</a>
<li><a href=#288>strlwr()</a>
<li><a href=#289>strrchr()</a>
<li><a href=#290>strrstr()</a>
<li><a href=#291>strsplit()</a>
<li><a href=#292>strstr()</a>
<li><a href=#293>strsub()</a>
<li><a href=#294>strtod()</a>
<li><a href=#295>strtol()</a>
<li><a href=#296>strupr()</a>
<li><a href=#297>strxstr()</a>
<li><a href=#275>system()</a>
<li><a href=#301>t2day()</a>
<li><a href=#301>t2dayofweek()</a>
<li><a href=#301>t2hour()</a>
<li><a href=#301>t2minute()</a>
<li><a href=#301>t2month()</a>
<li><a href=#301>t2second()</a>
<li><a href=#301>t2string()</a>
<li><a href=#301>t2year()</a>
<li><a href=#263>tan()</a>
<li><a href=#299>time()</a>
<li><a href=#252>tolower()</a>
<li><a href=#252>toupper()</a>
<li><a href=#262>trunc()</a>
<li><a href=#276>u2inch()</a>
<li><a href=#276>u2mic()</a>
<li><a href=#276>u2mil()</a>
<li><a href=#276>u2mm()</a>
<li><a href=#307>variant()</a>
<li><a href=#309>xmlattribute()</a>
<li><a href=#309>xmlattributes()</a>
<li><a href=#310>xmlelement()</a>
<li><a href=#310>xmlelements()</a>
<li><a href=#311>xmltags()</a>
<li><a href=#312>xmltext()</a>
</ul>


<a name=250>
<h1>字符函数</h1>
<i>字符函数</i>用于处理单个字符。
<p>
可用的字符函数如下：
<ul>
<li><a href=#251>isalnum()</a>
<li><a href=#251>isalpha()</a>
<li><a href=#251>iscntrl()</a>
<li><a href=#251>isdigit()</a>
<li><a href=#251>isgraph()</a>
<li><a href=#251>islower()</a>
<li><a href=#251>isprint()</a>
<li><a href=#251>ispunct()</a>
<li><a href=#251>isspace()</a>
<li><a href=#251>isupper()</a>
<li><a href=#251>isxdigit()</a>
<li><a href=#252>tolower()</a>
<li><a href=#252>toupper()</a>
</ul>


<a name=251>
<h1>is...()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
检查一个字符是否落入给定的分类。 falls into
<dt>
<b>语法</b>
<dd>
<tt>int isalnum(char c);</tt><br>
<tt>int isalpha(char c);</tt><br>
<tt>int iscntrl(char c);</tt><br>
<tt>int isdigit(char c);</tt><br>
<tt>int isgraph(char c);</tt><br>
<tt>int islower(char c);</tt><br>
<tt>int isprint(char c);</tt><br>
<tt>int ispunct(char c);</tt><br>
<tt>int isspace(char c);</tt><br>
<tt>int isupper(char c);</tt><br>
<tt>int isxdigit(char c);</tt>
<dt>
<b>返回</b>
<dd>
<tt>is...</tt> 函数返回非零值 if the 给定的字符 falls into the category，否则为 0。
</dl>
<h2>Character categories</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>isalnum</tt> </td><td width=20><td>字母 (<tt>A</tt>～<tt>Z</tt> 或 <tt>a</tt>～<tt>z</tt>) 或 digits (<tt>0</tt> to <tt>～</tt>）</td></tr>
<tr><td><tt>isalpha </tt> </td><td width=20><td>字母 (<tt>A</tt>～<tt>Z</tt> 或 <tt>a</tt>～<tt>z</tt>）</td></tr>
<tr><td><tt>iscntrl </tt> </td><td width=20><td>delete 字符 或 ordinary 控制字符 (<tt>0x7F</tt> 或 <tt>0x00</tt> to <tt>0x1F</tt>）</td></tr>
<tr><td><tt>isdigit </tt> </td><td width=20><td>数字 (<tt>0</tt>～<tt>9</tt>）</td></tr>
<tr><td><tt>isgraph </tt> </td><td width=20><td>打印字符 (except space)</td></tr>
<tr><td><tt>islower </tt> </td><td width=20><td>小写字母 (<tt>a</tt>～<tt>z</tt>）</td></tr>
<tr><td><tt>isprint </tt> </td><td width=20><td>可打印字符 (<tt>0x20</tt>～<tt>0x7E</tt>）</td></tr>
<tr><td><tt>ispunct </tt> </td><td width=20><td>punctuation 字符 (<tt>iscntrl</tt> 或 <tt>isspace</tt>）</td></tr>
<tr><td><tt>isspace </tt> </td><td width=20><td>space, tab, carriage return, new line, vertical tab, 或 formfeed (<tt>0x09</tt> to <tt>0x0D</tt>, <tt>0x20</tt>）</td></tr>
<tr><td><tt>isupper </tt> </td><td width=20><td>大写字母 (<tt>A</tt>～<tt>Z</tt>）</td></tr>
<tr><td><tt>isxdigit</tt> </td><td width=20><td>十六进制数字（<tt>0</tt>～<tt>9</tt>，<tt>A</tt>～<tt>F</tt>，<tt>a</tt>～<tt>f</tt>）</td></tr>
</table>
<h2>例</h2>
<pre>
char c = 'A';
if (isxdigit(c))
   printf("%c is hex\n", c);
else
   printf("%c is not hex\n", c);
</pre>


<a name=252>
<h1>to...()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
转换字符为大写或小写。
<dt>
<b>语法</b>
<dd>
<tt>char tolower(char c);</tt><br>
<tt>char toupper(char c);</tt>
<dt>
<b>返回</b>
<dd>
如果 <tt>c</tt> 为大写，<tt>tolower</tt> 函数返回已转换的字符。其它所有字符返回不变。<br>
如果 <tt>c</tt> 为小写，<tt>toupper</tt> 函数返回已转换的字符。其它所有字符返回不变。
</dl>
<b>另请参阅</b> <a href=#296>strupr</a>, <a href=#288>strlwr</a>


<a name=253>
<h1>文件操作函数</h1>
<i>文件操作函数</i> are used to work with 文件名称，大小以及时间戳记。
<p>
可用的文件操作函数如下：
<ul>
<li><a href=#254>fileerror()</a>
<li><a href=#255>fileglob()</a>
<li><a href=#256>filedir()</a>
<li><a href=#256>fileext()</a>
<li><a href=#256>filename()</a>
<li><a href=#259>fileread()</a>
<li><a href=#256>filesetext()</a>
<li><a href=#257>filesize()</a>
<li><a href=#257>filetime()</a>
</ul>
关于如何写入到文件的信息请参阅 <a href=#317>output()</a>。


<a name=254>
<h1>fileerror()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
返回 I/O 操作的状态。
<dt>
<b>语法</b>
<dd>
<tt>int fileerror();</tt>
<dt>
<b>返回</b>
<dd>
如果一切正常，则<tt>fileerror</tt> 函数返回 <tt>0</tt>。
</dl>
<b>另请参阅</b> <a href=#317>output</a>, <a href=#282>printf</a>, <a href=#259>fileread</a>
<p>
<tt>fileerror</tt> 检查 the status of any I/O 操作 that 已经执行 因为 the 上一次调用该函数，如果一切正常则返回 <tt>0</tt>。如果 I/O 的任何操作导致了错误， has caused an error, a 值 otherthan <tt>0</tt> 将 be 返回ed.
<p>
您应在 调用 <tt>fileerror</tt> before any I/O 操作 to reset any previous error state, and call it again after the I/O 操作s to see if they were successful.
<p>
当 <tt>fileerror</tt> 返回一大于 <tt>0</tt> (thus indicating an error) 的值时，a proper 错误消息 has already been 给定的 to the 用户.
<h2>例</h2>
<pre>
fileerror();
output("file.txt", "wt") {
  printf("Test\n");
  }
if (fileerror())
   exit(1);
</pre>


<a name=255>
<h1>fileglob()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
执行目录搜索。
<dt>
<b>语法</b>
<dd>
<tt>int fileglob(string &amp;array[], string pattern);</tt>
<dt>
<b>返回</b>
<dd>
<tt>fileglob</tt> 函数返回复制到 <tt>array</tt> 的条目数量。
</dl>
<b>另请参阅</b> <a href=#325>dlgFileOpen()</a>, <a href=#325>dlgFileSave()</a>
<p>
<tt>fileglob</tt> 执行目录搜索 using <tt>pattern</tt>.
<p>
<tt>pattern</tt> may 包含 <tt>'*'</tt> and <tt>'?'</tt> as 通配字符。如果 <tt>pattern</tt> 以 <tt>'/'</tt> 结束，则返回给定目录的内容。
<p>
结果 <tt>array</tt> 内以 <tt>'/'</tt> 结束的名称为目录名。
<p>
<tt>array</tt> 按字母顺序排序，with the 目录 coming 第一个.
<p>
特殊的条目 <tt>'.'</tt> 和 <tt>'..'</tt> （for the 当前目录和父目录）are never 返回ed in the <tt>array</tt>.
<p>
如果 <tt>pattern</tt> 不匹配，或者如果您没有权限搜索给定的目录，结果 <tt>array</tt> 将为空。
<h2>Note for Windows 用户</h2>
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle"> <tt>array</tt>中的目录分隔符始终为<b>正斜线</b>。这确保了用户语言程序将工作 平台无关。<tt>pattern</tt> 中的 <b>反斜线</b>（<tt>'\'</tt>) 也被被看作目录分隔符。
<p>
Windows 下文件名排序对大小写不敏感。
</td></tr></table>
<h2>例</h2>
<pre>
string a[];
int n = fileglob(a, "*.brd");
</pre>


<a name=256>
<h1>文件名函数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
把一个文件名分成几个独立的部分。
<dt>
<b>语法</b>
<dd>
<tt>string filedir(string file);</tt><br>
<tt>string fileext(string file);</tt><br>
<tt>string filename(string file);</tt><br>
<tt>string filesetext(string file, string newext);</tt>
<dt>
<b>返回</b>
<dd>
<tt>filedir   </tt> 返回<tt>文件</tt>的目录（包括 Windows 下的盘符）。<br>
<tt>fileext   </tt> 返回<tt>文件</tt>的扩展名。<br>
<tt>filename  </tt> 返回<tt>文件</tt>的文件名（包括扩展名）。<br>
<tt>filesetext</tt> 返回 <tt>文件</tt> with the extension set to <tt>newext</tt>.
</dl>
<b>另请参阅</b> <a href=#257>文件数据函数</a>
<h2>例</h2>
<pre>
if (board) board(B) {
  output(filesetext(B.name, ".out")) {
    ...
    }
  }
</pre>


<a name=257>
<h1>文件数据函数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    获取文件的时间戳及大小。
<dt>
<b>语法</b>
<dd>
<tt>int filesize(string filename);</tt><br>
<tt>int filetime(string filename);</tt>
<dt>
<b>返回</b>
<dd>
<tt>filesize</tt> 返回给定文件的大小（以字节为单位）。<br>
<tt>filetime</tt> 返回给定文件的时间戳 in a format to be used with the <a href=#298>时间函数</a>.
</dl>
<b>另请参阅</b> <a href=#299>time</a>，<a href=#256>文件名函数</a>
<h2>例</h2>
<pre>
board(B)
  printf("Board: %s\nSize: %d\nTime: %s\n"， B.name, filesize(B.name)， t2string(filetime(B.name)));
</pre>


<a name=258>
<h1>文件输入函数</h1>
<i>文件输入函数</i>用于从文件读入数据。
<p>
可用的文件输入函数如下：
<ul>
<li><a href=#259>fileread()</a>
</ul>
关于如何写入文件的信息请参阅 <a href=#317>output()</a>。


<a name=259>
<h1>fileread()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
从文件读入数据。
<dt>
<b>语法</b>
<dd>
<tt>int fileread(<i>dest</i>, string file);</tt>
<dt>
<b>返回</b>
<dd>
<tt>fileread</tt> 返回从文件读取的对象的数量。<br>
返回值的实际意义与 <tt>dest</tt> 的类型有关。
</dl>
<b>另请参阅</b> <a href=#271>lookup</a>，<a href=#291>strsplit</a>，<a href=#254>fileerror</a>
<p>
如果 <tt>dest</tt> 为字符数组，文件将作为原始的二进制数据进行读取 and 返回值 reflects the 字节数 读入到字符数组 (which is 等于 the file size).
<p>
如果 <tt>dest</tt> 为字符串数组, 文件将作为文本文件读取（one line per array member) and the 返回值 将 be the number of lines 读入字符串数组。换行字符 将 be stripped.
<p>
如果 <tt>dest</tt> 为字符串，整个文件将被读入该字符串，且返回值将是字符串的长度 (which is 不必等于文件大小，如果操作系统 stores text 文件 with "cr/lf" instead of a "换行" 字符）。
<h2>例</h2>
<pre>
char b[];
int nBytes = fileread(b, "data.bin");
string lines[];
int nLines = fileread(lines, "data.txt");
string text;
int nChars = fileread(text, "data.txt");
</pre>


<a name=260>
<h1>数学函数</h1>
<i>数学函数</i> 用于进行数学运算。
<p>
可用的数学函数如下：
<ul>
<li><a href=#261>abs()</a>
<li><a href=#263>acos()</a>
<li><a href=#263>asin()</a>
<li><a href=#263>atan()</a>
<li><a href=#262>ceil()</a>
<li><a href=#263>cos()</a>
<li><a href=#264>exp()</a>
<li><a href=#262>floor()</a>
<li><a href=#262>frac()</a>
<li><a href=#264>log()</a>
<li><a href=#264>log10()</a>
<li><a href=#261>max()</a>
<li><a href=#261>min()</a>
<li><a href=#264>pow()</a>
<li><a href=#262>round()</a>
<li><a href=#263>sin()</a>
<li><a href=#264>sqrt()</a>
<li><a href=#262>trunc()</a>
<li><a href=#263>tan()</a>
</ul>
<h2>错误消息s</h2>
如果 the 参数s of a 数学函数调用导致了错误，错误消息 将 显示实际的值 of the 参数s. Thus the 语句
<pre>
real x = -1.0;
real r = sqrt(2 * x);
</pre>
将导致错误消息
<pre>
非法参数 in call to 'sqrt(-2)'
</pre>


<a name=261>
<h1>绝对值，最大及最小函数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
绝对值，最大及最小函数。
<dt>
<b>语法</b>
<dd>
<tt>type abs(type x);</tt><br>
<tt>type max(type x, type y);</tt><br>
<tt>type min(type x, type y);</tt>
<dt>
<b>返回</b>
<dd>
<tt>abs</tt> 返回 <tt>x</tt> 的绝对值。<br>
<tt>max</tt> 返回 <tt>x</tt> 和 <tt>y</tt> 的最大值。<br>
<tt>min</tt> 返回 <tt>x</tt> 和 <tt>y</tt> 的最小值。
<p>
这些函数的返回类型与 (larger) 参数类型相同。<tt>type</tt> 必须为 <tt><a href=#168>char</a></tt>, <tt><a href=#169>int</a></tt> 或 <tt><a href=#170>real</a></tt> 之一。
</dl>
<h2>例</h2>
<pre>
real x = 2.567, y = 3.14;
printf("The maximum is %f\n", max(x, y));
</pre>


<a name=262>
<h1>取整函数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
取整函数。
<dt>
<b>语法</b>
<dd>
<tt>real ceil(real x);</tt><br>
<tt>real floor(real x);</tt><br>
<tt>real frac(real x);</tt><br>
<tt>real round(real x);</tt><br>
<tt>real trunc(real x);</tt>
<dt>
<b>返回</b>
<dd>
<tt>ceil </tt> 返回不小于 <tt>x</tt> 的最小整数。<br>
<tt>floor</tt> 返回不大于 <tt>x</tt> 的最大整数。<br>
<tt>frac </tt> 返回 the fractional part of <tt>x</tt>。<br>
<tt>round</tt> 返回 <tt>x</tt> rounded to the 最接近的整数。<br>
<tt>trunc</tt> 返回 <tt>x</tt> 的整数部分。
</dl>
<h2>例</h2>
<pre>
real x = 2.567;
printf("The rounded value of %f is %f\n", x, round(x));
</pre>


<a name=263>
<h1>三角函数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
三角函数。
<dt>
<b>语法</b>
<dd>
<tt>real acos(real x);</tt><br>
<tt>real asin(real x);</tt><br>
<tt>real atan(real x);</tt><br>
<tt>real cos(real x);</tt><br>
<tt>real sin(real x);</tt><br>
<tt>real tan(real x);</tt>
<dt>
<b>返回</b>
<dd>
<tt>acos</tt> 返回 <tt>x</tt> 的反余弦。<br>
<tt>asin</tt> 返回 <tt>x</tt> 的反正弦。<br>
<tt>atan</tt> 返回 <tt>x</tt> 的反正切。<br>
<tt>cos </tt> 返回 <tt>x</tt> 的余弦。<br>
<tt>sin </tt> 返回 <tt>x</tt> 的正弦。<br>
<tt>tan </tt> 返回 <tt>x</tt> 的正切。
</dl>
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PI</tt> </td><td width=20><td> "pi" 的值（3.14...）</td></tr>
</table>
<h2>注</h2>
角度以弧度给定。
<h2>例</h2>
<pre>
real x = PI / 2;
printf("The sine of %f is %f\n", x, sin(x));
</pre>


<a name=264>
<h1>指数函数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
指数函数。
<dt>
<b>语法</b>
<dd>
<tt>real exp(real x);</tt><br>
<tt>real log(real x);</tt><br>
<tt>real log10(real x);</tt><br>
<tt>real pow(real x, real y);</tt><br>
<tt>real sqrt(real x);</tt>
<dt>
<b>返回</b>
<dd>
<tt>exp  </tt> 返回 the 指数 <i>e</i> to the power of <tt>x</tt>.<br>
<tt>log  </tt> 返回 <tt>x</tt> 的自然对数。<br>
<tt>log10</tt> 返回 <tt>x</tt> 的以 10 为底的对数。<br>
<tt>pow  </tt> 返回 值 of <tt>x</tt> to the power of <tt>y</tt>.<br>
<tt>sqrt </tt> 返回 <tt>x</tt> 的平方根。
</dl>
<h2>例</h2>
<pre>
real x = 2.1;
printf("The square root of %f is %f\n", x, sqrt(x));
printf("The 3rd root of %f is %f\n", x, pow(x, 1.0/3));
</pre>


<a name=265>
<h1>杂项函数</h1>
<i>杂项函数</i> 用于执行各种任务。
<p>
可用的杂项函数如下：
<ul>
<li><a href=#267>country()</a>
<li><a href=#268>exit()</a>
<li><a href=#269>fdlsignature()</a>
<li><a href=#270>language()</a>
<li><a href=#271>lookup()</a>
<li><a href=#272>palette()</a>
<li><a href=#273>sort()</a>
<li><a href=#274>status()</a>
<li><a href=#275>system()</a>
<li><a href=#266>配置参数</a>
<li><a href=#276>单位转换</a>
</ul>


<a name=266>
<h1>配置参数</h1>
<dl>
<dt>
<b>功能</b>
<dd>
存储、找回配置参数。
<dt>
<b>语法</b>
<dd>
<tt>string cfgget(string name[, string default]);</tt><br>
<tt>void cfgset(string name, string value);</tt>
<dt>
<b>返回</b>
<dd>
<tt>cfgget</tt> 返回 值 of the 参数 stored under the 给定的 <tt>name</tt>。如果尚未存储这样的参数，则返回可选的值 <tt>default</tt>（或者一空字串, if no <tt>缺省的</tt> is 给定的).
</dl>
<tt>cfgget</tt> 函数 retrieves values that have previously been stored with a call to <tt>cfgset()</tt>.
<p>
<tt>cfgset</tt> 函数 sets the 参数 with the 给定的 <tt>name</tt> to the 给定的 <tt>value</tt>.
<p>
<tt>name</tt> 的有效字符为 <tt>'A'</tt>-<tt>'Z'</tt>，<tt>'a'</tt>-<tt>'z'</tt>，<tt>'0'</tt>-<tt>'9'</tt>，<tt>'.'</tt> 以及 <tt>'_'</tt>。<br>
参数的名称是大小写敏感的。
<p>
参数存储在用户的 eaglerc 文件。 To ensure that 不同的用户语言程序 don't 覆写 each other's 参数 in case they use the 相同的参数名称，it is 推荐的 to put the name of the ULP at the beginning of the 参数名称. 例如, a ULP named <tt>mytool.ulp</tt> that uses a 名为 <tt>MyParam</tt> 的参数 could store that 参数 under the name
<pre>
mytool.MyParam
</pre>
由于配置参数存储在 eaglerc 文件中，which also 包含所有 of EAGLE 的其它用户 specific 参数，也可以用 <tt>cfgget()</tt> 和 <tt>cfgset()</tt> 访问 EAGLE 参数。In order to make sure no ULP 参数 冲突 with any EAGLE 参数, the EAGLE 参数必须 be prefixed with <tt>"EAGLE:"</tt>,比如
<pre>
EAGLE:Option.XrefLabelFormat
</pre>
请注意 there is no 文档 of EAGLE 的所有内部参数 and how they are 存储在 the eaglerc 文件。 同样，be very careful 当改变ing any of 这些参数! As with the eaglerc file 自身, you should only manipulate 这些参数 如果您知道您在做什么！某些 EAGLE 参数可能需要重新启动 EAGLE 以使改变生效。
<p>
在 eaglerc 文件中，用户语言参数是以前缀 <tt>"ULP:"</tt> 存储的。因此这个前缀 may be 可选的ly put in front of 用户语言参数名称，比如
<pre>
ULP:mytool.MyParam
</pre>
<h2>例</h2>
<pre>
string MyParam = cfgget("mytool.MyParam", "SomeDefault");
MyParam = "OtherValue";
cfgset("mytool.MyParam", MyParam);
</pre>


<a name=267>
<h1>country()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
返回使用中的系统的国家代码。
<dt>
<b>语法</b>
<dd>
<tt>string country();</tt>
<dt>
<b>返回</b>
<dd>
<tt>country</tt> 返回 a 字符串 包含两个大写字母 that identifies the country used on the 当前的系统。If no such country setting can be determined，则返回默认的的 "US"。
</dl>
<b>另请参阅</b> <a href=#270>language</a>
<h2>例</h2>
<pre>
dlgMessageBox("您的国家代码为：" + country());
</pre>


<a name=268>
<h1>exit()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
退出用户语言程序.
<dt>
<b>语法</b>
<dd>
<tt>void exit(int result);</tt><br>
<tt>void exit(string command);</tt>
</dl>
<b>另请参阅</b> <a href=#92>RUN</a>
<p>
<tt>exit</tt> 函数终止用户语言程序的执行。<br>
如果给定了整数 <tt>result</tt>，那么它将用作程序的<a href=#143>返回值</a>。<br>
如果给定了字符串 <tt>command</tt>，that 命令将被执行 as if it were 输入进命令行 immediately after the RUN 命令。In that case the 返回值 of the ULP is set to <tt>EXIT_SUCCESS</tt>。
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>EXIT_SUCCESS</tt>   </td><td width=20><td>程序执行成功的返回值（值 <tt>0</tt>）</td></tr>
<tr><td><tt>EXIT_FAILURE</tt>   </td><td width=20><td>程序执行失败的返回值（值 <tt>-1</tt>）</td></tr>
</table>
<p>


<a name=269>
<h1>fdlsignature()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
计算 a 数字签名 for Premier Farnell's <i>Design Link</i>.
<dt>
<b>语法</b>
<dd>
<tt>string fdlsignature(string s, string key);</tt>
</dl>
<tt>fdlsignature</tt> 函数用于计算 a 数字签名 当 访问 Premier Farnell 的 <i>Design Link</i> 接口。


<a name=270>
<h1>language()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
返回系统所用的语言代码。
<dt>
<b>语法</b>
<dd>
<tt>string language();</tt>
<dt>
<b>返回</b>
<dd>
<tt>language</tt> 返回一字符串 包含两个小写字符 that identifies the language used on the 当前的系统。If no such language setting can be determined, the 缺省的 "en" 将 be 返回ed.
</dl>
<b>另请参阅</b> <a href=#267>country</a>
<p>
The <tt>language</tt> 函数可以用于 make a ULP use 不同的消息字串，依赖于 which language the 当前的system is using.
<p>
In the 例子 below 所有 the 字符串 used in the ULP are listed in the 字符串数组 <tt>I18N[]</tt>, preceeded by a 字符串 包含 the various language codes supported by this ULP. Note the <tt>vtab</tt> 字符 used to 分隔 the 单独的 parts of 每个字符串（they are important for the <tt>lookup</tt> function) and the use of the commas to 分隔 the 字符串. The 实际的 work is done in the 函数 <tt>tr()</tt>，which 返回 the translated 版本 of the 给定的字符串如果原始字串 can't be found in the <tt>I18N</tt> array, 或 there is no translation for the 当前的语言，原始的字符串 将 be used untranslated.
<p>
定义在 <tt>I18N</tt> 数组中的第一个语言必须是 one in which the 字符串 used throughout the ULP are written, and should generally be English 以便 make the 程序 accessible to the largest number of users.
<h2>例</h2>
<pre>
string I18N[] = {
  "en\v"
  "de\v"
  "it\v"
  ，  "I18N Demo\v"
  "Beispiel f&uuml;r Internationalisierung\v"
  "Esempio per internazionalizzazione\v"
  ，  "Hello world!\v"
  "Hallo Welt!\v"
  "Ciao mondo!\v"
  ，  "+Ok\v"
  "+Ok\v"
  "+Approvazione\v"
  ，  "-Cancel\v"
  "-Abbrechen\v"
  "-Annullamento\v"
  };
int Language = strstr(I18N[0], language()) / 3;
string tr(string s)
{
  string t = lookup(I18N, s, Language, '\v');
  return t ? t : s;
}
dlgDialog(tr("I18N Demo")) {
  dlgHBoxLayout dlgSpacing(350);
  dlgLabel(tr("Hello world!"));
  dlgHBoxLayout {
    dlgPushButton(tr("+Ok")) dlgAccept();
    dlgPushButton(tr("-Cancel")) dlgReject();
    }
  };
</pre>


<a name=271>
<h1>lookup()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在字符串数组中查找数据。
<dt>
<b>语法</b>
<dd>
<tt>string lookup(字符串数组[], string key, int field_index[, char separator]);</tt><br>
<tt>string lookup(字符串数组[], string key, string field_name[, char separator]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>lookup</tt> 返回值 of the field identified by <tt>field_index</tt> 或 <tt>field_name</tt>.<br>
如果 field 不存在，或者没有找到匹配 <tt>key</tt> 的字符串，则返回空字串。
</dl>
<b>另请参阅</b> <a href=#259>fileread</a>，<a href=#291>strsplit</a>
<p>
An <tt>array</tt> that can be used with <tt>lookup()</tt> 包含 字符串 of text, each string representing one 数据记录.
<p>
每个数据记录 包含 an 任意 number of fields, which are 分隔 由 the 字符 <tt>separator</tt>（默认为 <tt>'\t'</tt>，the tabulator）。第一个 field in a record is used as the <tt>key</tt> and is numbered <tt>0</tt>.
<p>
所有记录 must have unique <tt>key</tt> fields and none of the <tt>key</tt> fields may be empty - otherwise it is undefined which record 将 be found.
<p>
如果 第一个 string in the <tt>array</tt> 包含 a "Header" record (i.e. a record where each field 描述了 它的 contents), using <tt>lookup</tt> with a <tt>field_name</tt> string 自动地 determines the index of that field. This allows using the <tt>lookup</tt> 函数 without exactly knowing which field index 包含 the 期望的 data.<br> 
It is up to the 用户 to make sure that the 第一个 record actually 包含 header 信息.
<p>
如果 <tt>key</tt> 参数 in the call to <tt>lookup()</tt> is an empty 字符串，第一个字符串 of the <tt>array</tt> 将 be used. This allows a 程序 to determine whether there 为header record with the required field names.
<p>
如果一个字段包含 <tt>separator</tt> 字符, that field 必须以must be 扩上 enclosed in 双引号s (as in <tt>"abc;def"</tt>, assuming the 分号 (<tt>';'</tt>) is used as separator). The same applies if the field 包含 双引号s (<tt>"</tt>), 这种情况下， the 双引号s inside the field have to be doubled (as in <tt>"abc;""def"";ghi"</tt>, which 将 be <tt>abc;"def";ghi</tt>).<br>
<b>最好是使用默认的 "tab" 分隔符，which 不 have 这些问题 (no field can 包含 a tabulator).</b>
<p>
Here's 例子 数据文件 (<tt>';'</tt> has been used as separator for better readability):
<pre>
Name;Manufacturer;Code;Price
7400;Intel;I-01-234-97;$0.10
68HC12;Motorola;M68HC1201234;$3.50
</pre>
<h2>例</h2>
<pre>
string OrderCodes[];
if (fileread(OrderCodes, "ordercodes") &gt; 0) {
   if (lookup(OrderCodes, "", "Code", ';')) {
      SCHEMATIC(SCH) {
        SCH.parts(P) {
          string OrderCode;
          // both 以下 语句 do exactly the same:
          OrderCode = lookup(OrderCodes, P.device.name, "Code", ';');
          OrderCode = lookup(OrderCodes, P.device.name, 2, ';');
          }
        }
      }
   else
      dlgMessageBox("Missing 'Code' field in file 'ordercodes');
   }
</pre>


<a name=272>
<h1>palette()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
返回彩色的调色板信息。
<dt>
<b>语法</b>
<dd>
<tt>int palette(int index[, int type]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>palette</tt> 函数返回一个以形式为 0xaarrggbb 的整数值：ARGB, 或当前使用的调色板的类型（依赖于 <tt>index</tt> 的值）。
</dl>
<tt>palette</tt> 函数返回 ARGB 值 of the color with the 给定的 <tt>index</tt> (which may be in the 范围 0..PALETTE_ENTRIES-1）。如果没有给定 <tt>type</tt>（或者是 <tt>-1</tt>），将使用分配给当前的编辑器窗口的调色板。Otherwise <tt>type</tt> specifies which 调色板 to use (PALETTE_BLACK, PALETTE_WHITE 或 PALETTE_COLORED).
<p>
特殊的值 <tt>-1</tt> for <tt>index</tt> makes the function 返回 the type of the palette that is 当前 in use by the 编辑器窗口.
<p>
如果 either <tt>index</tt> 或 <tt>type</tt> is out of 范围, an 错误消息 将 be 给定的 and the ULP 将 be terminated.
<h2>常量</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>PALETTE_TYPES</tt>   </td><td width=20><td>调色板类型的数量（3）</td></tr>
<tr><td><tt>PALETTE_BLACK</tt>  </td><td width=20><td>黑色背景 palette (0)</td></tr>
<tr><td><tt>PALETTE_WHITE</tt>  </td><td width=20><td>白色背景 palette (1)</td></tr>
<tr><td><tt>PALETTE_COLORED</tt>  </td><td width=20><td>彩色背景 palette (2)</td></tr>
<tr><td><tt>PALETTE_ENTRIES</tt>  </td><td width=20><td>the number of 颜色 per palette (64)</td></tr>
</table>


<a name=273>
<h1>sort()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
对一个数组或一组数组进行排序。
<dt>
<b>语法</b>
<dd>
<tt>void sort(int number, array1[, array2,...]);</tt>
</dl>
<tt>sort</tt> 函数 either 直接 sorts a 给定的 <tt>array1</tt>, 或 it sorts 一组 arrays (starting with <tt>array2</tt>), 这种情况下， <tt>array1</tt> is supposed to be an array of <b>int</b>, which 将 be used as a 指针数组。
<p>
无论如何，<tt>number</tt> 参数定义了 the number of items in the array(s).
<h2>Sorting a single array</h2>
如果 <tt>sort</tt> 函数 is called with one single array, that array 将 be sorted directly,比如 the 以下 例如：
<pre>
string A[];
int n = 0;
A[n++] = "World";
A[n++] = "Hello";
A[n++] = "The truth is out there...";
sort(n, A);
for (int i = 0; i &lt; n; ++i)
    printf(A[i]);
</pre>
<h2>对一组数组排序</h2>
如果 <tt>sort</tt> 函数 is called with 多于一个数组，第一个数组必须为 an array of <b>int</b>, while 所有其它数组 may be of any array type and hold the data to be sorted. 下面的例子展示了 how the 第一个 数组 将 be used as a pointer:
<pre>
numeric string Nets[], Parts[], Instances[], Pins[];
int n = 0;
int index[];
SCHEMATIC(S) {
  S.nets(N) N.pinrefs(P) {
    Nets[n] = N.name;
    Parts[n] = P.part.name;
    Instances[n] = P.instance.name;
    Pins[n] = P.pin.name;
    ++n;
    }
  sort(n, index, Nets, Parts, Instances, Pins);
  for (int i = 0; i &lt; n; ++i)
      printf("%-8s %-8s %-8s %-8s\n"，Nets[index[i]], Parts[index[i]]，Instances[index[i]], Pins[index[i]]);
  }
</pre>
The idea behind this is that one 网络可能有几个引脚连接到它，and in a netlist 您可能想要 to have the 网络名称s sorted, and within one net you also want the part names sorted and so on.
<p>
请注意字符串数组中关键字 <tt>numeric</tt> 的使用。这导致 字符串 to be sorted in a way that 被考虑在内 a numeric part at the end of the 字符串, which leads to IC1, IC2,... IC9, IC10 instead of the alphabetical order IC1, IC10, IC2,...IC9.
<p>
当对一组数组排序时，the 第一个 (index) 数组必须为 <tt><a href=#169>int</a></tt> 类型，并且不需要初始化。Any contents the index 数组 might have before calling the <tt>sort</tt> 函数 将 be 覆写 by the resulting index values.


<a name=274>
<h1>status()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在状态栏显示状态消息。
<dt>
<b>语法</b>
<dd>
<tt>void status(string message);</tt><br>
</dl>
<b>另请参阅</b> <a href=#326>dlgMessageBox()</a>
<p>
<tt>status</tt> 函数显示 the 给定的 <tt>message</tt> in the 编辑器窗口的状态栏 in which the ULP is running.
</dl>


<a name=275>
<h1>system()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
执行一外部程序。
<dt>
<b>语法</b>
<dd>
<tt>int system(string command);</tt>
<dt>
<b>返回</b>
<dd>
<tt>system</tt> 函数返回命令的退出状态。如果一切正常，典型的返回值为 <tt>0</tt> , and non-zero in case of an error.
</dl>
<tt>system</tt> 函数执行由 <tt>command</tt> 字符串给定的外部程序，并等待直到程序结束。
<h2>输入/输出重定向</h2>
如果 外部程序 shall read 它的 标准输入 from (or write 它的 标准输出 to) a 特定的 file, 输入/输出需要重定向。
<p>
<table><tr><td valign="top"><img src="platforms-lin.png"><br><img src="platforms-mac.png"></td><td valign="middle">
On <b>Linux</b> and <b>Mac OS X</b> this is done by simply adding a <tt>'&lt;'</tt> 或 <tt>'&gt;'</tt> to the 命令行, followed by the 期望的 file name,比如
<pre>
system("program &lt; infile &gt; outfile");
</pre>
which runs <tt>program</tt> and makes it read from <tt>infile</tt> and write to <tt>outfile</tt>。
</td></tr></table>
<p>
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
On <b>Windows</b> you have to 明确地运行命令处理器 to do this,比如
<pre>
system("cmd.exe /c program &lt; infile &gt; outfile");
</pre>
（在基于 DOS 的 Windows 系统上，请使用 <tt>command.com</tt> 代替 <tt>cmd.exe</tt>）。
</td></tr></table>
<h2>背景 execution</h2>
<tt>system</tt> 函数 waits 直到给定的程序已经结束。This is useful for programs that only run for a few seconds, 或 completely take over the 用户's attention.
<p>
<table><tr><td valign="top"><img src="platforms-lin.png"><br><img src="platforms-mac.png"></td><td valign="middle">
如果外部程序运行时间较长，并且您想the 系统调用 to 立即返回，而不等待程序结束，您可以简单地 add an <tt>'&amp;'</tt> to the 命令字符串 under <b>Linux</b> and <b>Mac OS X</b>,比如
<pre>
system("program &amp;");
</pre>
</td></tr></table>
<p>
<table><tr><td valign="top"><img src="platforms-win.png"></td><td valign="middle">
Under Windows you need to 明确地运行命令处理器 to do this,比如
<pre>
system("cmd.exe /c start program");
</pre>
（在基于 DOS 的 Windows 系统上，请使用 <tt>command.com</tt> 替换 <tt>cmd.exe</tt>）。
</td></tr></table>
<h2>例</h2>
<pre>
int result = system("simulate -f filename");
</pre>
这将调用一个 simulation 程序, giving it 一个文件 which the ULP has just 建立d. 请注意，这里的 <tt>simulate</tt> 只是个例子，它并不是 EAGLE 程序包的一部分！
<p>
如果 您想要 have control over what 系统命令 are actually executed, 您可以写一个封装函数 that 提示用户 for confirmation 在执行命令之前，如
<pre>
int MySystem(string command)
{
  if (dlgMessageBox("!Ok to execute the follow command?&lt;p&gt;&lt;tt&gt;" + command + "&lt;/tt&gt;", "&amp;Yes", "&amp;No") == 0)
     return system(command);
  return -1;
}
int result = MySystem("simulate -f filename");
</pre>


<a name=276>
<h1>单位转换</h1>
<dl>
<dt>
<b>功能</b>
<dd>
转换内部单位。
<dt>
<b>语法</b>
<dd>
<tt>real u2inch(int n);</tt><br>
<tt>real u2mic(int n);</tt><br>
<tt>real u2mil(int n);</tt><br>
<tt>real u2mm(int n);</tt><br>
<tt>int inch2u(real n);</tt><br>
<tt>int mic2u(real n);</tt><br>
<tt>int mil2u(real n);</tt><br>
<tt>int mm2u(real n);</tt>
<dt>
<b>返回</b>
<dd>
<tt>u2inch</tt> 返回<tt>n</tt>的值 in <i>inch</i>.<br>
<tt>u2mic</tt>  返回<tt>n</tt>的值 in <i>microns</i> (1/1000mm).<br>
<tt>u2mil</tt>  返回<tt>n</tt>的值 in <i>mil</i> (1/1000inch).<br>
<tt>u2mm</tt>   返回<tt>n</tt>的值 in <i>millimeters</i>.<br>
<tt>inch2u</tt> 返回<tt>n</tt>的值 (which is in <i>inch</i>）作为内部单位。<br>
<tt>mic2u</tt>  返回<tt>n</tt>的值 (which is in <i>microns</i>）作为内部单位。<br>
<tt>mil2u</tt>  返回<tt>n</tt>的值 (which is in <i>mil</i>）作为内部单位。<br>
<tt>mm2u</tt>   返回<tt>n</tt>的值 (which is in <i>millimeters</i>）作为内部单位。
</dl>
<b>另请参阅</b> <a href=#190>UL_GRID</a>
<p>
EAGLE 存储所有坐标和尺寸值 as <tt><a href=#169>int</a></tt> values with a resolution of 1/320000mm (0.003125&micro;)。上述的单位转换函数可以用于转换这些内部单位 to the 期望的 测量单位单位，and vice versa.
<h2>例</h2>
<pre>
board(B) {
  B.elements(E) {
    printf("%s at (%f, %f)\n", E.name, u2mm(E.x), u2mm(E.y));
    }
  }
</pre>


<a name=277>
<h1>网络函数</h1>
<i>网络函数</i> 用于访问互联网上的远程站点。
<p>
可用的网络函数如下：
<ul>
<li><a href=#278>neterror()</a>
<li><a href=#279>netget()</a>
<li><a href=#280>netpost()</a>
</ul>


<a name=278>
<h1>neterror()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
返回最近的网络函数调用的错误消息。
<dt>
<b>语法</b>
<dd>
<tt>string neterror(void);</tt>
<dt>
<b>返回</b>
<dd>
<tt>neterror</tt> 返回描述最近调用网络函数出现的错误的文本消息。<br>
如果没有错误出现，则返回值为一空字串。
</dl>
<b>另请参阅</b> <a href=#279>netget</a>，<a href=#280>netpost</a>
<p>
<tt>neterror</tt> 函数应该在任何返回了一个负值之后调用，指明有错误发生。<tt>neterror</tt> 的返回值为一可以呈现给用户的文本字符串。
<h2>例</h2>
<pre>
string Result;
if (netget(Result, "http://www.cadsoft.de/cgi-bin/http-test?see=me&amp;hear=them") &gt;= 0) {
   // process Result
   }
else
   dlgMessageBox(neterror());
</pre>


<a name=279>
<h1>netget()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在网络上执行一 GET 请求。
<dt>
<b>语法</b>
<dd>
<tt>int netget(<i>dest</i>, string url[, int timeout]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>netget</tt> 返回从网络读取的对象数量。<br>
返回值的实际意义与 <tt>dest</tt> 的类型有关。<br>
In case of an error, a 负值 is 返回ed and <a href=#278>neterror()</a> may be called to display an 错误消息 to the 用户.
</dl>
<b>另请参阅</b> <a href=#280>netpost</a>, <a href=#278>neterror</a>, <a href=#259>fileread</a>
<p>
The <tt>netget</tt> 函数 sends the 给定的 <tt>url</tt> to the network and stores the result in the <tt>dest</tt> 变量.<br>
如果 no network activity has occurred for <tt>timeout</tt> seconds, the 连接将被终止。缺省的超时时间为 20 秒。<br>
<tt>url</tt> 必须包含所用的协议（HTTP，HTTPS 或 FTP），并可以包含参数对儿 name=value，比如
<pre>
http://www.cadsoft.de/cgi-bin/http-test?see=me&amp;hear=them
ftp://ftp.cadsoft.de/eagle/userfile/README
</pre>
如果访问远程站点需要用户 id 和 password，这些可以这样给出：
<pre>
https://userid:password@www.secret-site.com/...
</pre>
<tt>dest</tt> 为字符数组, 结果将被 被看作 原始的二进制数据 and the 返回值 reflects the number of bytes 存储在 the 字符数组。
<p>
<tt>dest</tt> 为字符串数组, 结果将被 被看作 text data (one line per 数组 member) and the 返回值 将 be the number of lines 存储在 the
字符串数组. 换行字符 将 be stripped.
<p>
<tt>dest</tt> 为字符串，结果将被存储在 that string and the 返回值 将 be the 字符串长度。请注意 in case of 二进制数据 the result is truncated at the 第一个 occurrence of a byte with 值 0x00.
<p>
如果您需要使用代理来访问互联网 with HTTP 或 HTTPS, 您可以 set that up in the "Configure" dialog under “帮助/检查更新” in the 控制面板.
<h2>例</h2>
<pre>
string Result;
if (netget(Result, "http://www.cadsoft.de/cgi-bin/http-test?see=me&amp;hear=them") &gt;= 0) {
   // process Result
   }
else
   dlgMessageBox(neterror());
</pre>


<a name=280>
<h1>netpost()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在网络上执行 POST 请求。
<dt>
<b>语法</b>
<dd>
<tt>int netpost(<i>dest</i>, string url, string data[, int timeout[, string content_type] ]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>netpost</tt> 返回 the number of 对象 read from the network.<br>
返回值实际意义与 <tt>dest</tt> 的类型有关。<br>
In case of an error, a 负值 is 返回ed and <a href=#278>neterror()</a> may be called to 显示一错误消息给用户。
</dl>
<b>另请参阅</b> <a href=#279>netget</a>，<a href=#278>neterror</a>，<a href=#259>fileread</a>
<p>
<tt>netpost</tt> 函数 sends the 给定的 <tt>data</tt> to the 给定的 <tt>url</tt> on the network and 存储结果 in the <tt>dest</tt> 变量。<br>
如果 no network activity has occurred for <tt>timeout</tt> seconds, the 连接 将 be terminated.  The 缺省的 timeout is 20 seconds.<br>
如果给定了 <tt>content_type</tt>，it 覆写s the 缺省的内容类型 of <tt>"text/html; charset=utf-8"</tt>.<br>
<tt>url</tt> 必须包含所用的协议（HTTP 或 HTTPS）。
<p>
如果访问远程站点需要用户的 id 和 password，这些可以以
<pre>
https://userid:password@www.secret-site.com/...
</pre>
给定。如果 <tt>dest</tt> 为字符数组, 结果将被 看作 原始的二进制数据 and the 返回值 reflects the 存储在字符数组中的字节数。
<p>
如果 <tt>dest</tt> 为字符串数组, 结果将被 看作 文本数据（每个数组成员一行）and the 返回值 将 be the number of lines 存储在 the 字符串数组. 换行字符 将 be stripped.
<p>
如果 <tt>dest</tt> 为字符串，结果将被 存储在 that string and the 返回值 将 be the 长度 of the string. 请注意 in case of 二进制数据 the result is truncated at the 第一个 occurrence of a byte with 值 0x00.
<p>
如果您 need to use a proxy to access the Internet with HTTP 或 HTTPS, 您可以 set that up in the "Configure" dialog under “帮助/检查更新” in the 控制面板.
<h2>例</h2>
<pre>
string Data = "see=me\nhear=them";
string Result;
if (netpost(Result, "http://www.cadsoft.de/cgi-bin/http-test", Data) &gt;= 0) {
   // process Result
   }
else
   dlgMessageBox(neterror());
</pre>


<a name=281>
<h1>打印函数</h1>
<i>打印函数</i>用于打印格式化的字符串。
<p>
可用的打印函数如下：
<ul>
<li><a href=#282>printf()</a>
<li><a href=#283>sprintf()</a>
</ul>


<a name=282>
<h1>printf()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Writes formatted 输出 to a 文件。
<dt>
<b>语法</b>
<dd>
<tt>int printf(string format[, argument, ...]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>printf</tt> 函数返回 the number of 字符 写入到文件 that has been opened by the most recent <a href=#317>output</a> 语句.
<p>
In case of an error, <tt>printf</tt> 返回 <tt>-1</tt>.
</dl>
<b>另请参阅</b> <a href=#283>sprintf</a>，<a href=#317>output</a>，<a href=#254>fileerror</a>
<h2>格式化字串</h2>
格式化字串控制 how the 参数s 将 be 转换，格式化以及打印。There must be exactly as many 参数s as necessary for the format. The number and type of 参数s 将 be checked against the format, and any mismatch 将 lead to an 错误消息.
<p>
格式化字串包含两类对象 - <i>明文字符</i> 和 <i>format specifiers</i>：
<ul>
<li>明文字符 are simply copied verbatim to the 输出 
<li>格式说明符 fetch 参数s from the 参数 list and apply formatting to them
</ul>
<h2>格式说明符</h2>
格式说明符具有以下形式：
<p>
<tt>% [flags] [width] [.prec] type</tt>
<p>
Each format specification begins with the 百分比字符（<tt>%</tt>）。After the <tt>%</tt> comes the 以下, in this order:
<ul>
<li>an 可选的 sequence of 标志 字符, <tt>[flags]</tt>
<li>an 可选的 width specifier, <tt>[width]</tt>
<li>an 可选的 precision 精度 specifier, <tt>[.prec]</tt>
<li>转换类型字符, <tt>type</tt>
</ul>
<h2>Conversion type 字符</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>d</tt>   </td><td width=20><td><b>signed</b> decimal <b>int</b></td></tr>
<tr><td><tt>o</tt>   </td><td width=20><td><b>unsigned</b> octal <b>int</b></td></tr>
<tr><td><tt>u</tt>   </td><td width=20><td><b>unsigned</b> decimal <b>int</b></td></tr>
<tr><td><tt>x</tt>   </td><td width=20><td><b>unsigned</b> hexadecimal <b>int</b> (with <b>a</b>, <b>b</b>,...)</td></tr>
<tr><td><tt>X</tt>   </td><td width=20><td><b>unsigned</b> hexadecimal <b>int</b> (with <b>A</b>, <b>B</b>,...)</td></tr>
<tr><td><tt>f</tt>   </td><td width=20><td><b>signed real</b> value of the form <tt>[-]dddd.dddd</tt></td></tr>
<tr><td><tt>e</tt>   </td><td width=20><td><b>signed real</b> value of the form <tt>[-]d.dddd</tt>e<tt>[&plusmn;]ddd</tt></td></tr>
<tr><td><tt>E</tt>   </td><td width=20><td>same as <tt>e</tt>, but with <b>E</b> for exponent</td></tr>
<tr><td><tt>g</tt>   </td><td width=20><td><b>signed real</b> value in either <tt>e</tt> 或 <tt>f</tt> form, based on 给定的 value and precision</td></tr>
<tr><td><tt>G</tt>   </td><td width=20><td>same as <tt>g</tt>, but with <b>E</b> for exponent if <tt>e</tt> format used</td></tr>
<tr><td><tt>c</tt>   </td><td width=20><td>single 字符</td></tr>
<tr><td><tt>s</tt>   </td><td width=20><td>字符 string</td></tr>
<tr><td><tt>%</tt>   </td><td width=20><td>the <tt>%</tt> 字符 is printed</td></tr>
</table>
<h2>Flag 字符</h2>
以下标志字符 can appear in any order and 组合.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>"-"</tt>   </td><td width=20><td>the formatted item is 左对齐的 within the field; normally, items are 右对齐的</td></tr>
<tr><td><tt>"+"</tt>   </td><td width=20><td>a signed, positive item 将始终以加号字符 (<tt>+</tt>）开始；normally, only negative items begin with a sign</td></tr>
<tr><td><tt>" "</tt>   </td><td width=20><td>a signed, positive item 将 始终 start with a space 字符; if both <tt>"+"</tt> and <tt>" "</tt> are specified,  <tt>"+"</tt> overrides <tt>" "</tt></td></tr>
</table>
<h2>Width specifiers</h2>
The width specifier sets the 最小的 field width for an 输出值.
<p>
Width is specified either directly, through a 十进制数字字符串，or indirectly, through an 星号 (<tt>*</tt>). 如果您 use an 星号 for the width specifier, the preceding 参数 (which must be an <tt>int</tt>) to the one being formatted (with this 格式说明符) determines the 最小的 输出 field width.
<p>
In no case does a nonexistent 或 small field width cause truncation of a field. 如果转换结果 is wider than the field width, the field is simply expanded to 包含 the 转换 result.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt><i>n</i></tt>   </td><td width=20><td>At least <i>n</i> 字符 被打印. 如果输出值 has 小于 <i>n</i> 字符, the 输出 is padded with blanks (right-padded if <tt>"-"</tt> 标志 给定的, left-padded otherwise).</td></tr>
<tr><td><tt>0<i>n</i></tt>   </td><td width=20><td>At least <i>n</i> 字符 被打印. 如果输出值 has 小于 <i>n</i> 字符, it is filled on the left with zeros.</td></tr>
<tr><td><tt>*</tt>   </td><td width=20><td>The 参数 list supplies the width specifier, which must precede the 实际的 参数 being formatted.</td></tr>
</table>
<h2>Precision specifiers</h2>
A precision specifier 始终 begins with a period (<tt>.</tt>) to separate it from any preceding width specifier. Then, like width, precision is specified either directly through a 十进制 digit 字符串，or indirectly, through an 星号 (<tt>*</tt>). 如果您 use an 星号 for the precision specifier, the preceding 参数 (which must be an <tt>int</tt>) to the one being formatted (with this 格式说明符) determines the precision.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>none   </td><td width=20><td>Precision set to 缺省的.</td></tr>
<tr><td><tt>.0</tt>   </td><td width=20><td>For <tt>int</tt> types, precision is set to 缺省的; for <tt>real</tt> types, no 十进制 point is printed.</td></tr>
<tr><td><tt>.<i>n</i></tt>   </td><td width=20><td><i>n</i> 字符 或 <i>n</i> 十进制 places 被打印. 如果输出值 has more than <i>n</i> 字符 the 输出 might be truncated 或 rounded (依赖于 the type 字符).</td></tr>
<tr><td><tt>*</tt>   </td><td width=20><td>The 参数 list supplies the precision specifier, which must precede the 实际的 参数 being formatted.</td></tr>
</table>
<h2>缺省的 precision values</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>douxX</tt>   </td><td width=20><td>1</td></tr>
<tr><td><tt>eEf</tt>   </td><td width=20><td>6</td></tr>
<tr><td><tt>gG</tt>   </td><td width=20><td>所有 significant digits</td></tr>
<tr><td><tt>c</tt>   </td><td width=20><td>no effect</td></tr>
<tr><td><tt>s</tt>   </td><td width=20><td>print entire string</td></tr>
</table>
<h2>How precision specification (<tt>.n</tt>) affects 转换</h2>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>douxX</tt>   </td><td width=20><td><i>.n</i> specifies that 至少 <i>n</i> 字符 被打印. 如果 输入参数 has 小于 <i>n</i> digits, the 输出值 is left-padded with zeros. 如果输入参数 has more than <i>n</i> digits, the 输出值 is <b>not</b> truncated.</td></tr>
<tr><td><tt>eEf</tt>   </td><td width=20><td><i>.n</i> specifies that <i>n</i> 字符 被打印 after the 十进制 point, and the last digit printed is rounded.</td></tr>
<tr><td><tt>gG</tt>   </td><td width=20><td><i>.n</i> specifies that at most <i>n</i> significant digits 被打印。</td></tr>
<tr><td><tt>c</tt>   </td><td width=20><td><i>.n</i> has no effect on the 输出.</td></tr>
<tr><td><tt>s</tt>   </td><td width=20><td><i>.n</i> specifies that no more than <i>n</i> 字符 被打印.</td></tr>
</table>
<h2>二进制 zero 字符</h2>
Unlike <a href=#283>sprintf</a>, the <tt>printf</tt> 函数 can print binary zero 字符 (0x00).
<pre>
char c = 0x00;
printf("%c", c);
</pre>
<h2>例</h2>
<pre>
int i = 42;
real r = 3.14;
char c = 'A';
string s = "Hello";
printf("Integer: %8d\n", i);
printf("Hex:     %8X\n", i);
printf("Real:    %8f\n", r);
printf("Char:    %-8c\n", c);
printf("String:  %-8s\n", s);
</pre>


<a name=283>
<h1>sprintf()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
写格式化输出到字符串中。
<dt>
<b>语法</b>
<dd>
<tt>int sprintf(string result, string format[, argument, ...]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>sprintf</tt> 函数返回写入 <tt>result</tt> 字符串的字符数量。
<p>
In case of an error, <tt>sprintf</tt> 返回 <tt>-1</tt>.
</dl>
<b>另请参阅</b> <a href=#282>printf</a>
<h2>格式化字串</h2>
参见 <a href=#282>printf</a>.
<h2>二进制零字符</h2>
请注意 <tt>sprintf</tt> 不能返回字符串 with embedded binary zero 字符 (0x00)。如果结果字串包含二进制零字符, 任何零字符以下的字符将被丢弃。
Use <a href=#282>printf</a> 如果您需要输出二进制数据.
<h2>例</h2>
<pre>
string result;
int number = 42;
sprintf(result, "The number is %d", number);
</pre>


<a name=284>
<h1>字符串函数</h1>
<i>字符串函数</i> 用于操作字符及字符串。
<p>
可用的字符串函数如下：
<ul>
<li><a href=#285>strchr()</a>
<li><a href=#286>strjoin()</a>
<li><a href=#287>strlen()</a>
<li><a href=#288>strlwr()</a>
<li><a href=#289>strrchr()</a>
<li><a href=#290>strrstr()</a>
<li><a href=#291>strsplit()</a>
<li><a href=#292>strstr()</a>
<li><a href=#293>strsub()</a>
<li><a href=#294>strtod()</a>
<li><a href=#295>strtol()</a>
<li><a href=#296>strupr()</a>
<li><a href=#297>strxstr()</a>
</ul>


<a name=285>
<h1>strchr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
扫描字符串 for the 第一个 occurrence of a 给定的字符
<dt>
<b>语法</b>
<dd>
<tt>int strchr(string s, char c[, int index]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strchr</tt> 函数返回字符串中的字符的整数偏移，或 <tt>-1</tt> if the 字符 does not occur in the string.
</dl>
<b>另请参阅</b> <a href=#289>strrchr</a>，<a href=#292>strstr</a>
<p>
如果给定了 <tt>index</tt>，则从该位置开始搜索。负值s are counted from the end of the string.
<h2>例</h2>
<pre>
string s = "This is a string";
char c = 'a';
int pos = strchr(s, c);
if (pos &gt;= 0)
   printf("The character %c is at position %d\n", c, pos);
else
   printf("The character was not found\n");
</pre>


<a name=286>
<h1>strjoin()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Joins a 字符串数组 to form a 单字符串。
<dt>
<b>语法</b>
<dd>
<tt>string strjoin(字符串数组[], char separator);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strjoin</tt> 函数返回 the combined entries of <tt>array</tt>.
</dl>
<b>另请参阅</b> <a href=#291>strsplit</a>，<a href=#271>lookup</a>，<a href=#259>fileread</a>
<p>
<tt>strjoin</tt> joins 所有 entries in <tt>array</tt>, delimited by the 给定的 <tt>separator</tt> and 返回结果字串。
<p>
如果 <tt>separator</tt> 为换行字符 (<tt>'\n'</tt>) the resulting string 将 be terminated with a 换行字符 This is done to have a text file that 包含 N lines (each of which is terminated with a 换行) and is 读入 with the <a href=#259>fileread()</a> 函数 and <a href=#291>split</a> into an 数组 of N 字符串 to be joined to the 原始字串 as read from the 文件。
<h2>例</h2>
<pre>
string a[] = { "Field 1", "Field 2", "Field 3" };
string s = strjoin(a, ':');
</pre>


<a name=287>
<h1>strlen()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
计算字符串的长度。
<dt>
<b>语法</b>
<dd>
<tt>int strlen(string s);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strlen</tt> 函数返回字符串中的字符个数。
</dl>
<h2>例</h2>
<pre>
string s = "This is a string";
int l = strlen(s);
printf("The string is %d 字符 long\n", l);
</pre>


<a name=288>
<h1>strlwr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
将字符串中的大写字母转换为小写。
<dt>
<b>语法</b>
<dd>
<tt>string strlwr(string s);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strlwr</tt> 函数返回修改后的字符串，原字符串（作为参数给定）不变。
</dl>
<b>另请参阅</b> <a href=#296>strupr</a>，<a href=#252>tolower</a>
<h2>例</h2>
<pre>
string s = "This is a String";
string r = strlwr(s);
printf("Prior to strlwr: %s - after strlwr: %s\n", s, r);
</pre>


<a name=289>
<h1>strrchr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
扫描字符串 for the last 出现 of a 给定的字符
<dt>
<b>语法</b>
<dd>
<tt>int strrchr(string s, char c[, int index]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strrchr</tt> 函数返回 the 整数 偏移 of the 字符 in the 字符串，or <tt>-1</tt> if the 字符 does not occur in the string.
</dl>
<b>另请参阅</b> <a href=#285>strchr</a>，<a href=#290>strrstr</a>
<p>
如果给定了 <tt>index</tt>，the search starts at that 位置. 负值s are counted from the end of the string.
<h2>例</h2>
<pre>
string s = "This is a string";
char c = 'a';
int pos = strrchr(s, c);
if (pos &gt;= 0)
   printf("The character %c is at position %d\n", c, pos);
else
   printf("The character was not found\n");
</pre>


<a name=290>
<h1>strrstr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
扫描字符串 for the last occurrence of a 给定的 子字符串.
<dt>
<b>语法</b>
<dd>
<tt>int strrstr(string s1, string s2[, int index]);</tt>
<dt>
<b>返回</b>
<dd>
The <tt>strrstr</tt> 函数返回 the 整数 偏移 of the 第一个字符 of s2 in s1, 或 <tt>-1</tt> if the 子字符串 does not occur in the string.
</dl>
<b>另请参阅</b> <a href=#292>strstr</a>，<a href=#289>strrchr</a>
<p>
如果给定了 <tt>index</tt>，the search starts at that 位置. 负值s are counted from the end of the string.
<h2>例</h2>
<pre>
string s1 = "This is a string", s2 = "is a";
int pos = strrstr(s1, s2);
if (pos &gt;= 0)
   printf("The substring starts at %d\n", pos);
else
   printf("The substring was not found\n");
</pre>


<a name=291>
<h1>strsplit()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
将一个字符串分 Splits a string into separate fields.
<dt>
<b>语法</b>
<dd>
<tt>int strsplit(string &amp;array[], string s, char separator);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strsplit</tt> 函数返回 the number of entries 复制到 <tt>array</tt>。
</dl>
<b>另请参阅</b> <a href=#286>strjoin</a>，<a href=#271>lookup</a>，<a href=#259>fileread</a>
<p>
<tt>strsplit</tt> splits the string <tt>s</tt> at the 给定的 <tt>separator</tt> and stores the resulting fields in the <tt>array</tt>.
<p>
如果 <tt>separator</tt> 为换行字符 (<tt>'\n'</tt>) the last field 将 be silently dropped if it is empty. This is done to have a text file that 包含 N lines (each of which is terminated with a 换行) and is 读入 with the <a href=#259>fileread()</a> 函数 to be split into an 数组 of N 字符串. With any 其它<tt>separator</tt> an empty field at the end of the string 将 count, so <tt>"a:b:c:"</tt> 将 result in 4 fields, the last of which is empty.
<h2>例</h2>
<pre>
string a[];
int n = strsplit(a, "Field 1:Field 2:Field 3", ':');
</pre>


<a name=292>
<h1>strstr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
扫描字符串 for the 第一个 occurrence of a 给定的 子字符串.
<dt>
<b>语法</b>
<dd>
<tt>int strstr(string s1, string s2[, int index]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strstr</tt> 函数返回 the 整数 偏移 of the 第一个字符 of s2 in s1, 或 <tt>-1</tt> if the 子字符串 does not occur in the string.
</dl>
<b>另请参阅</b> <a href=#290>strrstr</a>, <a href=#285>strchr</a>, <a href=#297>strxstr</a>
<p>
如果给定了 <tt>index</tt>，the search starts at that 位置. 负值s are counted from the end of the string.
<h2>例</h2>
<pre>
string s1 = "This is a string", s2 = "is a";
int pos = strstr(s1, s2);
if (pos &gt;= 0)
   printf("The substring starts at %d\n", pos);
else
   printf("The substring was not found\n");
</pre>


<a name=293>
<h1>strsub()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Extracts a substring from a string.
<dt>
<b>语法</b>
<dd>
<tt>string strsub(string s, int start[, int length]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strsub</tt> 函数返回 the 子字符串 indicated by the <tt>start</tt> and <tt>length</tt> 值.
<p>
<tt>length</tt> 的值必须为正，否则会返回空字串。如果 <tt>length</tt> 被省略, 则返回整组字串（beginning at <tt>start</tt>）。
<p>
如果 <tt>start</tt> points to a 位置 outside the 字符串，an 空字串 is 返回ed.
</dl>
<h2>例</h2>
<pre>
string s = "This is a string";
string t = strsub(s, 4, 7);
printf("The extracted substring is: %s\n", t);
</pre>


<a name=294>
<h1>strtod()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
转换字符串为实数值。
<dt>
<b>语法</b>
<dd>
<tt>real strtod(string s);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strtod</tt> 函数返回 the numerical 呈现 of the 给定的字符串 as a <tt>real</tt> 值。Conversion ends at the 第一个 字符 that does not fit into the format of a <a href=#156>real constant</a>. 如果 an error occurs during 转换 of the string <tt>0.0</tt> 将 be 返回ed.
</dl>
<b>另请参阅</b> <a href=#295>strtol</a>
<h2>例</h2>
<pre>
string s = "3.1415";
real r = strtod(s);
printf("Value is %f\n", r);
</pre>


<a name=295>
<h1>strtol()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
转换字符串为整数值。
<dt>
<b>语法</b>
<dd>
<tt>int strtol(string s);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strtol</tt> 函数返回 the numerical 呈现 of the 给定的字符串 as an <tt>int</tt> 值. Conversion ends at the 第一个字符 that does not fit into the format of an <a href=#155>整数常量</a>。如果字符串的转换过程中发生错误，则返回 <tt>0</tt>。
</dl>
<b>另请参阅</b> <a href=#294>strtod</a>
<h2>例</h2>
<pre>
string s = "1234";
int i = strtol(s);
printf("Value is %d\n", i);
</pre>


<a name=296>
<h1>strupr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
将字符串中的小写字母转换为大写。
<dt>
<b>语法</b>
<dd>
<tt>string strupr(string s);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strupr</tt> 函数返回修改后的字符串。原始字串（作为参数给定）不变。
</dl>
<b>另请参阅</b> <a href=#288>strlwr</a>，<a href=#252>toupper</a>
<h2>例</h2>
<pre>
string s = "This is a String";
string r = strupr(s);
printf("Prior to strupr: %s - after strupr: %s\n", s, r);
</pre>


<a name=297>
<h1>strxstr()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
扫描字符串 for the 第一个 occurrence of a 给定的正则表达式。
<dt>
<b>语法</b>
<dd>
<tt>int strxstr(string s1, string s2[, int index[, int &amp;length]]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>strxstr</tt> 函数返回 the 整数 偏移量 of the 子字符串 in s1 that 匹配 the 正则表达式 in s2, 或 <tt>-1</tt> if the 正则表达式 does not match in the string.
</dl>
<b>另请参阅</b> <a href=#292>strstr</a>，<a href=#285>strchr</a>，<a href=#290>strrstr</a>
<p>
如果给定了 <tt>index</tt>，the search starts at that 位置. 负值s are counted from the end of the string.
<p>
如果给定了 <tt>length</tt>，实际的长度 of the matching 子字符串 is 返回ed in that 变量.
<p>
<i>正则表达式</i> 允许您 to find a 模式 within a 文字串. 比如, the 正则表达式 "i.*a" 将 find a sequence of 字符 that starts with an 'i', followed by any 字符 ('.') any number of times ('*'), and ends with an 'a'. It 将 match on "is a" as well as "is this a" 或 "ia".<br> 
Details on 正则表达式 can be found, 比如, in the book <i>Mastering 正则表达式</i> by Jeffrey E. F. Friedl.
<h2>例</h2>
<pre>
string s1 = "This 为string", s2 = "i.*a";
int len = 0;
int pos = strxstr(s1, s2, 0, len);
if (pos &gt;= 0)
   printf("The substring starts at %d and is %d charcaters long\n", pos, len);
else
   printf("The substring was not found\n");
</pre>


<a name=298>
<h1>时间函数</h1>
<i>时间函数</i> 用于获取及处理时间和日期信息。
<p>
可用的时间函数如下：
<ul>
<li><a href=#301>t2day()</a>
<li><a href=#301>t2dayofweek()</a>
<li><a href=#301>t2hour()</a>
<li><a href=#301>t2minute()</a>
<li><a href=#301>t2month()</a>
<li><a href=#301>t2second()</a>
<li><a href=#301>t2string()</a>
<li><a href=#301>t2year()</a>
<li><a href=#299>time()</a>
<li><a href=#300>timems()</a>
</ul>


<a name=299>
<h1>time()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
获取当前的系统时间。
<dt>
<b>语法</b>
<dd>
<tt>int time(void);</tt>
<dt>
<b>返回</b>
<dd>
<tt>time</tt> 函数返回当前的系统时间作为 as the number of seconds elapsed 因为 a system dependent 参考日期。
</dl>
<b>另请参阅</b> <a href=#301>时间转换</a>, <a href=#257>filetime</a>, <a href=#300>timems()</a>
<h2>例</h2>
<pre>
int CurrentTime = time();
</pre>


<a name=300>
<h1>timems()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
获取从 ULP 开始运行以来的毫秒数。
<dt>
<b>语法</b>
<dd>
<tt>int timems(void);</tt>
<dt>
<b>返回</b>
<dd>
<tt>timems</tt> 函数返回 the number of 毫秒 因为 the start of the ULP.
<p>
After 86400000 毫秒 (i.e. 每 24 小时), 值 starts at 0 again.
</dl>
<b>另请参阅</b> <a href=#299>time</a>
<h2>例</h2>
<pre>
int elapsed = timems();
</pre>


<a name=301>
<h1>时间转换</h1>
<dl>
<dt>
<b>功能</b>
<dd>
将时间值转换为日、月、年等。
<dt>
<b>语法</b>
<dd>
<tt>int t2day(int t);</tt><br>
<tt>int t2dayofweek(int t);</tt><br>
<tt>int t2hour(int t);</tt><br>
<tt>int t2minute(int t);</tt><br>
<tt>int t2month(int t);</tt><br>
<tt>int t2second(int t);</tt><br>
<tt>int t2year(int t);</tt><br>
<br>
<tt>string t2string(int t[, string format]);</tt>
<dt>
<b>返回</b>
<dd>
<tt>t2day      </tt> 返回 the day of the month (<tt>1</tt>..<tt>31</tt>）<br>
<tt>t2dayofweek</tt> 返回 the day of the week (<tt>0</tt>=sunday..<tt>6</tt>）<br>
<tt>t2hour     </tt> 返回 the hour (<tt>0</tt>..<tt>23</tt>）<br>
<tt>t2minute   </tt> 返回 the minute (<tt>0</tt>..<tt>59</tt>）<br>
<tt>t2month    </tt> 返回 the month (<tt>0</tt>..<tt>11</tt>）<br>
<tt>t2second   </tt> 返回 the second (<tt>0</tt>..<tt>59</tt>）<br>
<tt>t2year     </tt> 返回 the year (including century!)<br>
<tt>t2string   </tt> 返回 a formatted string 包含 date and time
</dl>
<b>另请参阅</b> <a href=#299>time</a>
<p>
<tt>t2string</tt> 函数 without the 可选的 <tt>format</tt> 参数 converts the 给定的 time <tt>t</tt> into a country specific string in local time.
<p>
如果 <tt>t2string</tt> is called with a <tt>format</tt> 字符串，that format 用于 determine what the result should look like.
<p>
可以用于 <tt>format</tt> 字串的表达式如下：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>d</td><td width=20><td>the day as a number without a 前导零 (1 to 31)</td></tr>
<tr><td>dd</td><td width=20><td>the day as a number with a 前导零 (01 to 31)</td></tr>
<tr><td>ddd</td><td width=20><td>the abbreviated localized day name (e.g. "Mon" to "Sun")</td></tr>
<tr><td>dddd</td><td width=20><td>the long localized day name (e.g. "Monday" to "Sunday")</td></tr>
<tr><td>M</td><td width=20><td>the month as a number without a 前导零 (1-12)</td></tr>
<tr><td>MM</td><td width=20><td>the month as a number with a 前导零 (01-12)</td></tr>
<tr><td>MMM</td><td width=20><td>the abbreviated localized month name (e.g. "Jan" to "Dec")</tr>
<tr><td>MMMM</td><td width=20><td>the long localized month name (e.g. "January" to "December")</td></tr>
<tr><td>yy</td><td width=20><td>the year as a 两个 digit number (00-99)</td></tr>
<tr><td>yyyy</td><td width=20><td>the year as a four digit number</td></tr>
<tr><td>h</td><td width=20><td>the hour without a 前导零 (0 to 23 或 1 to 12 if AM/PM display)</td></tr>
<tr><td>hh</td><td width=20><td>the hour with a 前导零 (00 to 23 或 01 to 12 if AM/PM display)</td></tr>
<tr><td>m</td><td width=20><td>the minute without a 前导零 (0 to 59)</td></tr>
<tr><td>mm</td><td width=20><td>the minute with a 前导零 (00 to 59)</td></tr>
<tr><td>s</td><td width=20><td>the second without a 前导零 (0 to 59)</td></tr>
<tr><td>ss</td><td width=20><td>the second with a 前导零 (00 to 59)</td></tr>
<tr><td>z</td><td width=20><td>the 毫秒 without 前导零s (始终 0, 因为 the 给定的 time only has a one second resolution)</td></tr>
<tr><td>zzz</td><td width=20><td>the 毫秒 with 前导零s (始终 000, 因为 the 给定的 time only has a one second resolution)</td></tr>
<tr><td>AP</td><td width=20><td>use AM/PM display (<i>AP</i> 将 被替换 by either "AM" 或 "PM")</td></tr>
<tr><td>ap</td><td width=20><td>use am/pm display (<i>ap</i> 将 被替换 by either "am" 或 "pm")</td></tr>
<tr><td>U</td><td width=20><td>display the 给定的 time as UTC (must be the 第一个 字符; 缺省的 is local time)</td></tr>
</table>
<p>
其它所有字符 将 be copied "as is". Any sequence of 字符 that are enclosed in 单引号 将 be 看作 text and not be used as an 表达式. Two consecutive 单引号s ('') are replaced by a 单引号 in the 输出.
<h2>例</h2>
<pre>
int t = time();
printf("It is now %02d:%02d:%02d\n"，t2hour(t), t2minute(t), t2second(t));
printf("ISO time is %s\n", t2string(t, "Uyyyy-MM-dd hh:mm:ss"));
</pre>


<a name=302>
<h1>对象函数</h1>
<i>对象函数</i> 用于访问关于对象的 common 信息。
<p>
可用的对象函数如下：
<ul>
<li><a href=#303>clrgroup()</a>
<li><a href=#304>ingroup()</a>
<li><a href=#305>setgroup()</a>
<li><a href=#306>setvariant()</a>
<li><a href=#307>variant()</a>
</ul>


<a name=303>
<h1>clrgroup()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Clears 组 标志s of an 对象.
<dt>
<b>语法</b>
<dd>
<tt>void clrgroup(对象);</tt>
<dt>
</dl>
<b>另请参阅</b> <a href=#304>ingroup()</a>, <a href=#305>setgroup()</a>, <a href=#55>GROUP command</a>
<p>
<tt>clrgroup()</tt> 函数 clears 组 标志s of the 给定的对象，以便 it is no longer part of the previously defined 组.
<p>
当 applied to an 对象 that 包含 其它对象 (like a UL_BOARD 或 UL_NET) 组 标志s of 所有包含的对象 are cleared recursively, but with analogous limitations like for <a href=#305>setgroup()</a>.
<h2>例</h2>
<pre>
board(B) {
  B.elements(E)
    clrgroup(E);
  }
</pre>


<a name=304>
<h1>ingroup()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
检查 whether an 对象 is in 组.
<dt>
<b>语法</b>
<dd>
<tt>int ingroup(对象);</tt>
<dt>
<b>返回</b>
<dd>
<tt>ingroup</tt> 函数返回一非零值 如果给定的对象 is in 组.
</dl>
<b>另请参阅</b> <a href=#303>clrgroup()</a>, <a href=#305>setgroup()</a>, <a href=#55>GROUP command</a>
<p>
如果 a 组 has been defined in the editor, the <tt>ingroup()</tt> 函数可以用于 check whether a 特定的 对象 is part of 组.
<p>
对象 with a 单独的坐标 that are 单独的ly 可选的 in the 当前绘图 (like UL_TEXT, UL_VIA, UL_CIRCLE etc.) 返回一非零值 in a call to <tt>ingroup()</tt> if that 坐标 is within the defined 组.
<p>
A UL_WIRE 返回 0, 1, 2 或 3, 依赖于 whether none, the 第一个, the second 或 both of 它的 端点 are in 组.
<p>
A UL_RECTANGLE and UL_FRAME 返回 a 非零值 if 一个或多个 of 它的 corners are in 组. 值 has bit 0 set for the upper right corner, bit 1 for the upper left, bit 2 for the bottom left, and bit 3 for the bottom right corner.
<p>
Higher ranking 对象 that have no 坐标 (UL_NET, UL_SEGMENT, UL_SIGNAL, UL_POLYGON) 或 that are actually not available as 绘图 对象 (UL_SHEET, UL_DEVICESET, UL_SYMBOL, UL_PACKAGE), 返回一非零值 if 一个或多个 of the 对象 within them are in 组. For details on the 对象 hierarchies see <a href=#174>对象类型</a>.
<br>
UL_CONTACTREF and UL_PINREF, though not having 坐标 of their own, 返回一非零值 if the referenced UL_CONTACT 或 UL_PIN, 分别, is within 组. <br>
对于其它非可选对象，比如 UL_GRID, UL_VARIANT 或 wires of a UL_TEXT 或 UL_FRAME 对象，the behaviour of <tt>ingroup()</tt> is undefined and therefore should not be used.
<p>
<h2>Identifying the 右键菜单对象</h2>
如果 ULP is started from a 右键菜单 the 所选的 对象 can be accessed by 组 mechansim（参见  <a href=#92>RUN</a>):
A one 元素 组 is made from the 所选的 对象. So it can be identified with <tt>ingroup().</tt>
<h2>例</h2>
<pre>
output("group.txt") {
  board(B) {
    B.elements(E) {
      if (ingroup(E))
         printf("element %s is in the group\n", E.name);
      }
    }
  }
</pre>


<a name=305>
<h1>setgroup()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Sets 组 标志s of an 对象.
<dt>
<b>语法</b>
<dd>
<tt>void setgroup(对象[, int flags]);</tt>
</dl>
<b>另请参阅</b> <a href=#303>clrgroup()</a>, <a href=#304>ingroup()</a>, <a href=#55>GROUP 命令</a>
<p>
<tt>setgroup()</tt> 函数 sets 组 标志s of the 给定的对象，以便 it becomes part of 组.
<p>
如果没有给定 <tt>flags</tt>，the 对象 is added to 组 as a whole (i.e. 所有 of 它的 selection points, in case it has more than one).
<p>
如果 <tt>flags</tt> has a 非零值, only 组 标志s of the 给定的 points of the 对象 are set. For a UL_WIRE this means that <tt>'1'</tt> sets 组 标志 of the 第一个 point, <tt>'2'</tt> that of the 第二个点，and <tt>'3'</tt> sets both. Any previously set 组 标志s remain unchanged by a call to <tt>setgroup()</tt>.
<p>
当 applied to an 对象 that 包含其它对象 (like a UL_PCB图或 UL_NET) 组 标志s of 所有包含的对象 are set recursively with 以下 限制：<br>
It's not the case for UL_LIBRARY and UL_SCHEMATIC. Subordinate 对象 that are not 可选的 或 not inidividually 可选的 are not flagged (e.g. UL_GRID 或 UL_VARIANT 对象 或 wires of UL_TEXT 或 UL_FRAME 对象). <br>
For details on the 对象 hierarchies see <a href=#174>对象类型</a>.
<h2>例</h2>
<pre>
board(B) {
  B.elements(E)
    setgroup(E);
  }
</pre>


<a name=306>
<h1>setvariant()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Sets the 当前的组装变体.
<dt>
<b>语法</b>
<dd>
<tt>int setvariant(string name);</tt>
</dl>
<b>另请参阅</b> <a href=#307>variant()</a>, <a href=#212>UL_VARIANTDEF</a>, <a href=#106>VARIANT command</a>
<p>
The <tt>setvariant()</tt> 函数 sets the 当前的组装变体 to the one 给定的 by <tt>name</tt>. This 可以用于 遍历 所有 of the parts and "see" their data exactly as defined in the 给定的 variant.
<p>
<tt>name</tt> must reference a valid 组装变体 that is contained in the 当前的绘图.
<p>
This 函数返回 a 非零值 if the 给定的 组装变体 exists, zero otherwise.
<p>
The 组装变体 that has been set by a call to <tt>setvariant()</tt> is only active until the 用户语言程序 返回. After that, the variant in the 绘图 将 be the same as before the start of the ULP.
<h2>例</h2>
<pre>
if (setvariant("My variant")) {
   // do something ...
else
   // error: unknown variant
</pre>


<a name=307>
<h1>variant()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Query the 当前的组装变体.
<dt>
<b>语法</b>
<dd>
<tt>string variant(void);</tt>
</dl>
<b>另请参阅</b> <a href=#306>setvariant()</a>，<a href=#212>UL_VARIANTDEF</a>，<a href=#106>VARIANT command</a>
<p>
The <tt>variant()</tt> 函数返回 the name of the 当前的组装变体. 如果 no variant is 当前 所选的, the 空字串 (<tt>''</tt>) is 返回ed.
<h2>例</h2>
<pre>
string CurrentVariant = variant();
</pre>


<a name=308>
<h1>XML 函数</h1>
<i>XML 函数</i> are used to process XML (<i>Extensible Markup Language</i>) data.
<p>
可用的 XML 函数如下：
<ul>
<li><a href=#309>xmlattribute()</a>
<li><a href=#309>xmlattributes()</a>
<li><a href=#310>xmlelement()</a>
<li><a href=#310>xmlelements()</a>
<li><a href=#311>xmltags()</a>
<li><a href=#312>xmltext()</a>
</ul>


<a name=309>
<h1>xmlattribute(), xmlattributes()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Extract the 属性 of an XML 标签.
<dt>
<b>语法</b>
<dd>
<tt>string xmlattribute(string xml, string tag, string 属性);</tt><br>
<tt>int xmlattributes(string &amp;array[], string xml, string tag);</tt>
</dl>
<b>另请参阅</b> <a href=#310>xmlelement()</a>，<a href=#311>xmltags()</a>，<a href=#312>xmltext()</a>
<p>
The <tt>xmlattribute</tt> 函数返回 值 of the 给定的 <tt>属性</tt> from the 给定的 <tt>tag</tt> within the 给定的 <tt>xml</tt> code.
如果 an 属性 appears more than 一旦 in the same 标签, 值 of 它的 last occurrence is taken.
<p>
The <tt>xmlattributes</tt> 函数 stores the names of 所有 属性 from the 给定的 <tt>tag</tt> within the 给定的 <tt>xml</tt> code in the <tt>array</tt>
and 返回 the number of 属性 found. 如果 an 属性 appears more than 一旦 in the same 标签, 它的 name appears only 一旦 in the <tt>array</tt>.
<p>
The <tt>tag</tt> is 给定的 in the form of a <i>path</i>.
<p>
如果 给定的 <tt>xml</tt> code 包含 an error, the result of any XML function is empty, and a warning dialog is presented to the 用户, giving 信息
about where in the ULP and XML code the error occurred. 请注意 the line and column number within the XML code refers to the 实际的 string 给定的 to this
function as the <tt>xml</tt> 参数.
<h2>例</h2>
<pre>
// XML 包含 the 以下 data:
&lt;root&gt;
  &lt;body abc="def" xyz="123"&gt;
    ...
  &lt;/body&gt;
&lt;/root&gt;
//
string s[];
int n = xmlattributes(s, XML, "root/body");
Result: { "abc", "xyz" }
string s = xmlattribute(XML, "root/body", "xyz");
Result: "123"
</pre>


<a name=310>
<h1>xmlelement(), xmlelements()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Extract 元素 from an XML code.
<dt>
<b>语法</b>
<dd>
<tt>string xmlelement(string xml, string tag);</tt><br>
<tt>int xmlelements(string &amp;array[], string xml, string tag);</tt>
</dl>
<b>另请参阅</b> <a href=#311>xmltags()</a>，<a href=#309>xmlattribute()</a>，<a href=#312>xmltext()</a>
<p>
The <tt>xml元素</tt> 函数返回 the 完整的 XML 元素 of the 给定的 <tt>tag</tt> within the 给定的 <tt>xml</tt> code. The result still 包含 the 元素's outer XML 标签, and can thus be used for further processing with the 其它XML 函数.
Any 空白字符 within plain text parts of the 元素 is retained. The overall formatting of the XML 标签 within the 元素 may be 不同的 than the 原始的 <tt>xml</tt> code, though.<br>
如果 there is more than one occurrence of <tt>tag</tt> within <tt>xml</tt>, the 第一个 one 将 be 返回ed. Use <tt>xml元素s</tt> if 您想要 get 所有 occurrences.
<p>
The <tt>xml元素s</tt> 函数 works just like <tt>xml元素</tt>, but 返回 所有 occurrences of 元素s with the 给定的 <tt>tag</tt>. The 返回值 is the number of 元素s 存储在 the <tt>array</tt>.
<p>
The <tt>tag</tt> is 给定的 in the form of a <i>path</i>.
<p>
如果 给定的 <tt>xml</tt> code 包含 an error, the result of any XML function is empty, and a warning dialog is presented to the 用户, giving 信息 about where in the ULP and XML code the error occurred. 请注意 the line and column number within the XML code refers to the 实际的 string 给定的 to this function as the <tt>xml</tt> 参数.
<h2>例</h2>
<pre>
// XML 包含 the 以下 data:
&lt;root&gt;
  &lt;body&gt;
    &lt;contents&gt;
      &lt;string&gt;Some text 1&lt;/string&gt;
      &lt;any&gt;anything 1&lt;/any&gt;
    &lt;/contents&gt;
    &lt;contents&gt;
      &lt;string&gt;Some text 2&lt;/string&gt;
      &lt;any&gt;anything 2&lt;/any&gt;
    &lt;/contents&gt;
    &lt;appendix&gt;
      &lt;string&gt;Some text 3&lt;/string&gt;
    &lt;/appendix&gt;
  &lt;/body&gt;
&lt;/root&gt;
//
string s = xml元素(XML, "root/body/appendix");
Result: " &lt;appendix&gt;\n  &lt;string&gt;Some text 3&lt;/string&gt;\n &lt;/appendix&gt;\n"
string s[];
int n = xml元素s(s, XML, "root/body/contents");
Result: { " &lt;contents&gt;\n  &lt;string&gt;Some text 1&lt;/string&gt;\n  &lt;any&gt;anything 1&lt;/any&gt;\n &lt;/contents&gt;\n"，          " &lt;contents&gt;\n  &lt;string&gt;Some text 2&lt;/string&gt;\n  &lt;any&gt;anything 2&lt;/any&gt;\n &lt;/contents&gt;\n"
        }
</pre>


<a name=311>
<h1>xmltags()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Extract the list of 标签 names within an XML code.
<dt>
<b>语法</b>
<dd>
<tt>int xmltags(string &amp;array[], string xml, string tag);</tt>
</dl>
<b>另请参阅</b> <a href=#310>xmlelement()</a>，<a href=#309>xmlattribute()</a>，<a href=#312>xmltext()</a>
<p>
The <tt>xmltags</tt> 函数返回 the names of 所有 the 标签 on the top level
of the 给定的 <tt>tag</tt> within the 给定的 <tt>xml</tt> code.
The 返回值 is the number of 标签 names 存储在 the <tt>array</tt>.
<p>
Each 标签 name is 返回ed only 一旦, 即使 it appears several times in the XML code.
<p>
The <tt>tag</tt> is 给定的 in the form of a <i>path</i>.
<p>
如果 给定的 <tt>xml</tt> code 包含 an error, the result of any XML function is empty, and a warning dialog is presented to the 用户, giving 信息 about where in the ULP and XML code the error occurred. 请注意 the line and column number within the XML code refers to the 实际的 string 给定的 to this 函数 as the <tt>xml</tt> 参数.
<h2>例</h2>
<pre>
// XML 包含 the 以下 data:
&lt;root&gt;
  &lt;body&gt;
    &lt;contents&gt;
      &lt;string&gt;Some text 1&lt;/string&gt;
      &lt;any&gt;anything 1&lt;/any&gt;
    &lt;/contents&gt;
    &lt;contents&gt;
      &lt;string&gt;Some text 2&lt;/string&gt;
      &lt;any&gt;anything 2&lt;/any&gt;
    &lt;/contents&gt;
    &lt;appendix&gt;
      &lt;string&gt;Some text 3&lt;/string&gt;
    &lt;/appendix&gt;
  &lt;/body&gt;
&lt;/root&gt;
//
string s[];
int n = xmltags(s, XML, "root/body");
Result: { "contents", "appendix" }
int n = xmltags(s, XML, "");
Result: "root"
</pre>


<a name=312>
<h1>xmltext()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Extract the textual data of an XML 元素.
<dt>
<b>语法</b>
<dd>
<tt>string xmltext(string xml, string tag);</tt>
</dl>
<b>另请参阅</b> <a href=#310>xmlelement()</a>，<a href=#309>xmlattribute()</a>，<a href=#311>xmltags()</a>
<p>
<tt>xmltext</tt> 函数返回 文本数据 from the 给定的 <tt>tag</tt> within the 给定的 <tt>xml</tt> 代码。
<p>
Any 标签 within the text are stripped, 空白字符（包括换行字符） is retained.
<p>
The <tt>tag</tt> is 给定的 in the form of a <i>path</i>.
<p>
如果给定的 <tt>xml</tt> 代码含有错误，the result of any XML 函数 is empty, and a warning dialog is presented to the 用户, giving 信息 about where in the ULP and XML code the error occurred. 请注意 the line and column number within the XML code refers to the 实际的 string 给定的 to this 函数 as the <tt>xml</tt> 参数.
<h2>例</h2>
<pre>
// XML 包含 the 以下 data:
&lt;root&gt;
  &lt;body&gt;
    Some &lt;b&gt;text&lt;/b&gt;.
  &lt;/body&gt;
&lt;/root&gt;
//
string s = xmltext(XML, "root/body");
Result: "\n    Some text.\n  "
</pre>


<a name=313>
<h1>内建的语句</h1>
<i>内建的语句</i> 通常用于打开 a certain 上下文 in which 数据结构 或 文件 can be accessed.
<p>
内建语句的一般语法为：
<pre>
name(参数) 语句
</pre>
where <tt>name</tt> 为内建语句的名称，<tt>参数</tt> stands for 一个或多个 参数, and <tt>statement</tt> is the code that 将 be executed inside the 上下文 opened by the 内建语句。
<p>
请注意 <tt>statement</tt> 可以是复合语句,比如
<pre>
board(B) {
  B.元素s(E) printf("元素: %s\n", E.name);
  B.Signals(S)  printf("Signal: %s\n", S.name);
  }
</pre>
可用的内建语句如下：
<ul>
<li><a href=#314>board()</a>
<li><a href=#315>deviceset()</a>
<li><a href=#316>library()</a>
<li><a href=#317>output()</a>
<li><a href=#318>package()</a>
<li><a href=#319>schematic()</a>
<li><a href=#320>sheet()</a>
<li><a href=#321>symbol()</a>
</ul>


<a name=314>
<h1>board()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a board 上下文.
<dt>
<b>语法</b>
<dd>
<tt>board(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#319>原理图</a>，<a href=#316>元件库</a>
<p>
The <tt>board</tt> 语句 opens a board 上下文 if the 当前的编辑器窗口 包含 a board 绘图. A 变量 of type <a href=#178>UL_BOARD</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>.
<p>
一旦 the board 上下文 is successfully opened and a board 变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the board 变量 can be accessed to retrieve further data from the board.
<p>
如果 当前的编辑器窗口不包含 a board 绘图, an 错误消息 is 给定的 and the 终止 ULP。
<h2>Check if there 为board</h2>
By using the <tt>board</tt> 语句 without an 参数 您可以检查当前的编辑器窗口是否包含 PCB 绘图。In that case, <tt>board</tt> behaves like an 整数常量, 返回ing <tt>1</tt> if there 为board 绘图 in the 当前的编辑器窗口, and <tt>0</tt> otherwise.
<h2>Accessing board from a 原理图</h2>
如果 当前的编辑器窗口 包含 a 原理图 绘图, 您可以 still access that 原理图's board by preceding the <tt>board</tt> 语句 with the 前缀 <tt>工程</tt>,比如
<pre>
project.board(B) { ... }
</pre>
This 将 open a board 上下文 regardless whether the 当前的编辑器窗口 包含 a PCB图或 a 原理图绘图。However, there must be an 编辑器窗口 包含 that board somewhere on the desktop!
<h2>例</h2>
<pre>
if (board)
   board(B) {
     B.元素s(E)
       printf("元素: %s\n", E.name);
     }
</pre>


<a name=315>
<h1>deviceset()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a 器件 上下文.
<dt>
<b>语法</b>
<dd>
<tt>deviceset(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#318>封装</a>，<a href=#321>符号</a>，<a href=#316>元件库</a>
<p>
The <tt>deviceset</tt> 语句 opens a 器件 上下文 if the 当前的编辑器窗口 包含 a device 绘图. A 变量 of type <a href=#185>UL_DEVICESET</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>。
<p>
一旦 the 器件 上下文 is 被成功地打开 and a 器件 变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the 器件 变量 can be accessed to retrieve further data from the 器件.
<p>
如果 当前的编辑器窗口 不 包含 a device 绘图, an 错误消息 is 给定的 and the 终止 ULP。
<h2>Check if there 为器件</h2>
By using the <tt>deviceset</tt> 语句 without an 参数 您可以 check if the 当前的编辑器窗口 包含 a device 绘图. In that case, <tt>deviceset</tt> behaves like an 整数常量, returning <tt>1</tt> if there 为device 绘图 in the 当前的编辑器窗口, and <tt>0</tt> otherwise.
<h2>例</h2>
<pre>
if (deviceset)
   deviceset(D) {
     D.gates(G)
       printf("Gate: %s\n", G.name);
     }
</pre>


<a name=316>
<h1>library()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a 元件库 上下文.
<dt>
<b>语法</b>
<dd>
<tt>library(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#314>board</a>，<a href=#319>原理图</a>，<a href=#315>deviceset</a>，<a href=#318>封装</a>，<a href=#321>符号</a>
<p>
The <tt>library</tt> 语句 opens a 元件库 上下文 if the 当前的编辑器窗口 包含 a 元件库绘图. A 变量 of type <a href=#196>UL_LIBRARY</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>.
<p>
一旦 the 元件库 上下文 is successfully opened and a 元件库 变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the 元件库 变量 can be accessed to retrieve further data from the元件库。
<p>
如果当前的编辑器窗口不包含元件库绘图，an 错误消息 is 给定的 and the 终止 ULP。
<h2>Check if there 为library</h2>
By using the <tt>library</tt> 语句 without an 参数 您可以 check if the 当前的编辑器窗口 包含 a 元件库绘图. In that case, <tt>library</tt> behaves like an 整数常量, returning <tt>1</tt> if there 为元件库绘图 in the 当前的编辑器窗口, and <tt>0</tt> otherwise.
<h2>例</h2>
<pre>
if (library)
   library(L) {
     L.devices(D)
       printf("Device: %s\n", D.name);
     }
</pre>


<a name=317>
<h1>output()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens an 输出文件 for subsequent printf() calls.
<dt>
<b>语法</b>
<dd>
<tt>output(string filename[, string mode]) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#282>printf</a>，<a href=#254>fileerror</a>
<p>
The <tt>output</tt> 语句 opens 一个文件 with the 给定的 <tt>filename</tt> and <tt>mode</tt> for 输出 through subsequent printf() calls. 如果 file has been successfully opened, the <tt>statement</tt> is executed, and after that the file is closed.
<p>
如果文件无法打开，an 错误消息 is 给定的 and execution of the 终止 ULP。
<p>
默认情况下，the 输出文件 is written into the <b>Project</b> directory.
<h2>File Modes</h2>
<tt>mode</tt> 参数定义了 how the 输出文件 is to be opened. 如果 no <tt>mode</tt> 参数 is 给定的, 默认为 <tt>"wt"</tt>.
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><tt>a</tt>   </td><td width=20><td>追加到已有文件，如果不存在则建立新文件</td></tr>
<tr><td><tt>w</tt>   </td><td width=20><td>建立新文件(over编写 an existing file)</td></tr>
<tr><td><tt>t</tt>   </td><td width=20><td>以文本模式打开文件</td></tr>
<tr><td><tt>b</tt>   </td><td width=20><td>以二进制模式打开文件</td></tr>
<tr><td><tt>D</tt>   </td><td width=20><td>结束 EAGLE 会话时删除该文件（仅在与<tt>w</tt>一起使用时工作）</td></tr>
<tr><td><tt>F</tt>   </td><td width=20><td>强制使用该文件名 (normally *.brd, *.sch and *.lbr are rejected)</td></tr>
</table>
<p>
Mode 字符 may appear in any order and 组合. However, only the last one of <tt>a</tt> and <tt>w</tt> 或 <tt>t</tt> and <tt>b</tt>, 分别, is significant. 例如 a mode of <tt>"abtw"</tt> 将 open 一个文件 for textual write, which 将 be the same as <tt>"wt"</tt>.
<h2>Nested Output 语句</h2>
<tt>output</tt> 语句 can be nested, as long as there are enough file 处理s available, and provided that no 两个 active <tt>output</tt> 语句 access the <b>same</b> 文件。
<h2>例</h2>
<pre>
void PrintText(string s)
{
  printf("This also goes into the file: %s\n", s);
}
output("file.txt", "wt") {
  printf("Directly printed\n");
  PrintText("via 函数调用");
  }
</pre>


<a name=318>
<h1>package()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a 封装 上下文.
<dt>
<b>语法</b>
<dd>
<tt>package(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#316>元件库</a>，<a href=#315>deviceset</a>，<a href=#321>符号</a>
<p>
The <tt>package</tt> 语句 opens a 封装 上下文 如果当前的编辑器窗口包含封装绘图。A 变量 of type <a href=#198>UL_PACKAGE</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>.
<p>
一旦 the 封装 上下文 is 成功地打开 and a 封装 变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the 封装 变量 can be accessed to retrieve further data from the 封装.
<p>
如果 当前的编辑器窗口 不 包含 a 封装 绘图, an 错误消息 is 给定的 and the 终止 ULP。
<h2>检查是否存在封装</h2>
通过使用 <tt>package</tt> 语句 而不含参数，您可以检查当前的编辑器窗口是否包含封装绘图。In that case, <tt>package</tt> behaves like an 整数常量, returning <tt>1</tt> if there 为package 绘图 in the 当前的编辑器窗口, and <tt>0</tt> otherwise.
<h2>例</h2>
<pre>
if (package)
   package(P) {
     P.contacts(C)
       printf("Contact: %s\n", C.name);
     }
</pre>


<a name=319>
<h1>SCHEMATIC()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a 原理图 上下文.
<dt>
<b>语法</b>
<dd>
<tt>SCHEMATIC(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#314>board</a>, <a href=#316>元件库</a>, <a href=#320>图纸</a>
<p>
The <tt>原理图</tt> 语句 opens a 原理图 上下文 if the 当前的编辑器窗口 包含 a 原理图 绘图. A 变量 of type <a href=#205>UL_SCHEMATIC</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>.
<p>
一旦 the 原理图 上下文 is successfully opened and a 原理图 变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the 原理图 变量 can be accessed to retrieve further data from the 原理图.
<p>
如果 当前的编辑器窗口 不 包含 a 原理图 绘图, an 错误消息 is 给定的 and the 终止 ULP。
<h2>Check if there 为原理图</h2>
By using the <tt>原理图</tt> 语句 without an 参数 您可以 check if the 当前的编辑器窗口 包含 a 原理图 绘图. In that case, <tt>原理图</tt> behaves like an 整数常量, returning <tt>1</tt> if there 为原理图 绘图 in the 当前的编辑器窗口, and <tt>0</tt> otherwise.
<h2>Accessing 原理图 from a board</h2>
如果 当前的编辑器窗口 包含 a board 绘图, 您可以 still access that board's 原理图 by preceding the <tt>原理图</tt> 语句 with the 前缀 <tt>工程</tt>,比如
<pre>
工程.SCHEMATIC(S) { ... }
</pre>
This 将 open a 原理图 上下文 regardless whether the 当前的编辑器窗口 包含 a 原理图 或 a board 绘图. However, there must be an 编辑器窗口 包含 that 原理图 somewhere on the desktop!
<h2>访问当前的图纸t</h2>
用 <tt><a href=#320>sheet</a></tt> 语句来直接访问当前载入的图纸。
<h2>例</h2>
<pre>
if (SCHEMATIC)
   SCHEMATIC(S) {
     S.parts(P)
       printf("Part: %s\n", P.name);
     }
</pre>


<a name=320>
<h1>sheet()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a 图纸 上下文.
<dt>
<b>语法</b>
<dd>
<tt>sheet(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#319>原理图</a>
<p>
The <tt>sheet</tt> 语句 opens a 图纸 上下文 if the 当前的编辑器窗口 包含 a 图纸 绘图. A 变量 of type <a href=#207>UL_SHEET</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>.
<p>
一旦 the 图纸 上下文 is successfully opened and a 图纸 变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the 图纸 变量 can be accessed to retrieve further data from the 图纸.
<p>
如果 当前的编辑器窗口 不 包含 a 图纸 绘图, an 错误消息 is 给定的 and the 终止 ULP。
<h2>Check if there 为sheet</h2>
By using the <tt>sheet</tt> 语句 without an 参数 您可以 check if the 当前的编辑器窗口 包含 a 图纸 绘图. In that case, <tt>sheet</tt> behaves like an 整数常量, returning <tt>1</tt> if there 为图纸 绘图 in the 当前的编辑器窗口, and <tt>0</tt> otherwise.
<h2>例</h2>
<pre>
if (sheet)
   sheet(S) {
     S.instances(I)
       printf("Instance: %s\n", I.name);
     }
</pre>


<a name=321>
<h1>symbol()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
打开符号语境。
<dt>
<b>语法</b>
<dd>
<tt>符号(标识符) 语句</tt>
</dl>
<b>另请参阅</b> <a href=#316>元件库</a>，<a href=#315>deviceset</a>，<a href=#318>封装</a>
<p>
<tt>符号</tt> 语句打开一符号语境 if the 当前的编辑器窗口包含符号绘图。A 变量 of type <a href=#210>UL_SYMBOL</a> is 建立d and is 给定的 the name indicated by <tt>标识符</tt>。
<p>
一旦符号语境成功打开 and a 符号变量 has been 建立d, the <tt>statement</tt> 被执行. Within the scope of the <tt>statement</tt> the 符号变量 can be accessed to retrieve 更多的数据 from the 符号.
<p>
如果当前的编辑器窗口不含符号绘图，将给出一错误消息并终止 ULP。
<h2>检查是否存在符号</h2>
通过使用 <tt>符号</tt> 语句 without an 参数 您可以检查当前的编辑器窗口是否包含符号绘图。In that case, <tt>符号</tt> behaves like an 整数常量，返回 <tt>1</tt> if there 为符号 绘图 in the 当前的编辑器窗口，否则为 <tt>0</tt>。
<h2>例</h2>
<pre>
if (符号)
   符号(S) {
     S.pins(P)
       printf("Pin: %s\n", P.name);
     }
</pre>


<a name=322>
<h1>对话框</h1>
    用户语言对话框允许您为用户语言程序定义您自己的前端（界面）。
<p>
    以下章节详细地描述了用户语言对话框：
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#323>预定义的对话框</a>  </td><td width=20><td>描述了 the ready to use 标准 对话框</td></tr>
<tr><td><a href=#327>对话框对象</a>  </td><td width=20><td>定义了可以用于对话框的对象</td></tr>
<tr><td><a href=#351>布局信息</a>  </td><td width=20><td>解释如何在对话框内定义对象的位置</td></tr>
<tr><td><a href=#352>对话框函数</a>  </td><td width=20><td>描述了 特殊功能 for use with 对话框</td></tr>
<tr><td><a href=#359>一个完整的例子</a>  </td><td width=20><td>shows a 完整的 ULP with a data entry dialog</td></tr>
</table>


<a name=323>
<h1>预定义对话框</h1>
<i>预定义对话框</i>实现了典型的标准对话框 that are frequently used for 选择文件名或 issuing 错误消息s.
<p>
可用的预定义对话框如下：
<ul>
<li><a href=#324>dlgDirectory()</a>
<li><a href=#325>dlgFileOpen()</a>
<li><a href=#325>dlgFileSave()</a>
<li><a href=#326>dlgMessageBox()</a>
</ul>
关于如何定义您自己的复杂的用户对话框的信息，参见 <a href=#327>对话框对象</a>。


<a name=324>
<h1>dlgDirectory()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    显示一个目录对话框。
<dt>
<b>语法</b>
<dd>
<tt>string dlgDirectory(string Title[, string Start])</tt>
<dt>
<b>返回</b>
<dd>
    <tt>dlgDirectory</tt> 函数返回所选目录的完整路径名称。<br>
如果用户取消了对话框，则结果为一空字串。
</dl>
<b>另请参阅</b> <a href=#325>dlgFileOpen</a>
<p>
    <tt>dlgDirectory</tt> 函数显示目录对话框 from which the 用户可以选择一个目录。
<p>
<tt>标题</tt> 用作对话框的标题。
<p>
如果 <tt>Start</tt> 不为空，它将用作 <tt>dlgDirectory</tt> 的起始点。
<h2>例</h2>
<pre>
string dirName;
dirName = dlgDirectory("Select a directory", "");
</pre>


<a name=325>
<h1>dlgFileOpen(), dlgFileSave()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
显示一文件对话框。
<dt>
<b>语法</b>
<dd>
<tt>string dlgFileOpen(string Title[, string Start[, string Filter]])</tt><br>
<tt>string dlgFileSave(string Title[, string Start[, string Filter]])</tt>
<dt>
<b>返回</b>
<dd>
     <tt>dlgFileOpen</tt> 与 <tt>dlgFileSave</tt> 函数返回所选的文件的完整的路径名称。<br>
如果用户取消了对话框，则结果将返回一空字串。
</dl>
<b>另请参阅</b> <a href=#324>dlgDirectory</a>
<p>
<tt>dlgFileOpen</tt> 与 <tt>dlgFileSave</tt> 函数 显示 a 文件对话框 from which the 用户可以选择文件。
<p>
<tt>标题</tt> 将用作对话框的标题。
<p>
如果 <tt>Start</tt> is not empty, it 将 be used as the 起点 for the 文件对话框。否则将使用当前的目录。
<p>
仅显示匹配 <tt>Filter</tt> 的文件。如果 <tt>Filter</tt> 为空，则显示所有文件。
<p>
<tt>Filter</tt> can be either a simple 通配符 (as in <tt>"*.brd"</tt>), a list of 通配符 (as in <tt>"*.bmp&nbsp;*.jpg"</tt>) 或 may even 包含 描述性的文字，比如 <tt>"Bitmap&nbsp;文件&nbsp;(*.bmp)"</tt>。如果“文件类型”下拉列表框 of the 文件对话框 shall 包含几项 several entries, they have to be 分隔 由 double semicolons,比如
<tt>"Bitmap&nbsp;文件&nbsp;(*.bmp);;Other&nbsp;images&nbsp;(*.jpg&nbsp;*.png)"</tt>.
<h2>例</h2>
<pre>
string fileName;
fileName = dlgFileOpen("Select a file", "", "*.brd");
</pre>


<a name=326>
<h1>dlgMessageBox()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
显示 a message box.
<dt>
<b>语法</b>
<dd>
<tt>int dlgMessageBox(string Message[, <i>button_list</i>])</tt>
<dt>
<b>返回</b>
<dd>
<tt>dlgMessageBox</tt> 函数返回 the index of the 按钮 the 用户 has 所选的.<br>
The 第一个 按钮 in <tt>button_list</tt> has index <tt>0</tt>.
</dl>
<b>另请参阅</b> <a href=#274>status()</a>
<p>
<tt>dlgMessageBox</tt> 函数 显示 给定的 <tt>Message</tt> in a modal dialog and 等待 直至用户 选择s one of the 按钮定义在 <tt>button_list</tt>.
<p>
如果 <tt>Message</tt> 包含任何 HTML 标签，字符 '&lt;', '&gt;' 和 '&amp;' must be 给定的 as "&amp;lt;", "&amp;gt;" and "&amp;amp;", 分别, if they shall be displayed as such.
<p>
<tt>button_list</tt> is an 可选的 list of 逗号分隔的字符串，which 定义了 the set of 按钮 that 将 be displayed at the bottom of the message box.<br>
A maximum of three 按钮 can be defined. 如果没有给定 <tt>button_list</tt>，it defaults to <tt>"OK"</tt>.
<p>
The 第一个 按钮 in <tt>button_list</tt> 将 become the 缺省的按钮（which 将 be 所选的 if the 用户 hits ENTER），and the last 按钮 in the list 将 become the "cancel 按钮", which is 所选的 if the 用户 hits ESCape 或 closes the message box. 您可以 make a 不同的 按钮 the 缺省的 按钮 by starting 它的 name with a <tt>'+'</tt>, and 您可以 make a 不同的 按钮 the cancel 按钮 by starting 它的 name with a <tt>'-'</tt>. To start a 按钮 text with an 实际的 <tt>'+'</tt> 或 <tt>'-'</tt> it has to be <a href=#358>escaped</a>.
<p>
如果 a 按钮 text 包含 an <tt>'&amp;'</tt>, the 字符 以下 the ampersand 将 变成热键，and 当 the 用户 hits the 相应的 键, that 按钮 将 be 所选的。To have an 实际的 <tt>'&amp;'</tt> 字符 in the text it has to be <a href=#358>escaped</a>.
<p>
The message box can be 给定的 an 图标 by setting the 第一个 字符 of <tt>Message</tt> to<br>
&nbsp;&nbsp;&nbsp;<tt>'<b>;</b>'</tt> - for an <i>Information</i><br>
&nbsp;&nbsp;&nbsp;<tt>'<b>!</b>'</tt> - for a <i>Warning</i><br>
&nbsp;&nbsp;&nbsp;<tt>'<b>:</b>'</tt> - for an <i>Error</i><br>
If, however, the <tt>Message</tt> shall begin with one of 这些 字符, it has to be <a href=#358>escaped</a>。
<p>
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle">
On <b>Mac OS X</b> only the 字符 <tt>'<b>:</b>'</tt> 将 actually result in showing an 图标。所有其他的 被忽略。
</td></tr></table>
<h2>例</h2>
<pre>
if (dlgMessageBox("!Are you sure?", "&amp;Yes", "&amp;No") == 0) {
   // let's do it!
   }
</pre>


<a name=327>
<h1>对话框对象</h1>
A 用户语言 Dialog is built from the 以下 <i>对话框对象</i>:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#328>dlgCell</a>    </td><td width=20><td>a grid cell 上下文</td></tr>
<tr><td><a href=#329>dlgCheckBox</a>      </td><td width=20><td>a checkbox</td></tr>
<tr><td><a href=#330>dlgComboBox</a>      </td><td width=20><td>a 下拉列表框 selection field</td></tr>
<tr><td><a href=#331>dlgDialog</a>          </td><td width=20><td>the basic container of any dialog</td></tr>
<tr><td><a href=#332>dlgGridLayout</a>  </td><td width=20><td>a grid based layout 上下文</td></tr>
<tr><td><a href=#333>dlgGroup</a>            </td><td width=20><td>a 组 field</td></tr>
<tr><td><a href=#334>dlgHBoxLayout</a>  </td><td width=20><td>a horizontal box layout 上下文</td></tr>
<tr><td><a href=#335>dlgIntEdit</a>        </td><td width=20><td>an 整数 entry field</td></tr>
<tr><td><a href=#336>dlgLabel</a>            </td><td width=20><td>a text 标签</td></tr>
<tr><td><a href=#337>dlgListBox</a>        </td><td width=20><td>a 列表框</td></tr>
<tr><td><a href=#338>dlgListView</a>      </td><td width=20><td>a list view</td></tr>
<tr><td><a href=#339>dlgPushButton</a>  </td><td width=20><td>a push 按钮</td></tr>
<tr><td><a href=#340>dlgRadioButton</a></td><td width=20><td>a radio 按钮</td></tr>
<tr><td><a href=#341>dlgRealEdit</a>      </td><td width=20><td>a real entry field</td></tr>
<tr><td><a href=#342>dlgSpacing</a>        </td><td width=20><td>a layout spacing 对象</td></tr>
<tr><td><a href=#343>dlgSpinBox</a>        </td><td width=20><td>a spin box selection field</td></tr>
<tr><td><a href=#344>dlgStretch</a>        </td><td width=20><td>a layout stretch 对象</td></tr>
<tr><td><a href=#345>dlgStringEdit</a>  </td><td width=20><td>a string entry field</td></tr>
<tr><td><a href=#346>dlgTabPage</a>        </td><td width=20><td>a tab page</td></tr>
<tr><td><a href=#347>dlgTabWidget</a>    </td><td width=20><td>a tab page container</td></tr>
<tr><td><a href=#348>dlgTextEdit</a>      </td><td width=20><td>a text entry field</td></tr>
<tr><td><a href=#349>dlgTextView</a>      </td><td width=20><td>a text viewer field</td></tr>
<tr><td><a href=#350>dlgVBoxLayout</a>  </td><td width=20><td>a vertical box layout 上下文</td></tr>
</table>
<p>


<a name=328>
<h1>dlgCell</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a cell 位置 within a 栅格布局语境.
<dt>
<b>语法</b>
<dd>
<tt>dlgCell(int row, int column[, int row2, int column2]) <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#332>dlgGridLayout</a>，<a href=#334>dlgHBoxLayout</a>，<a href=#350>dlgVBoxLayout</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgCell</tt> 语句定义了 the 位置 of a cell within a <a href=#332>栅格布局语境</a>.
<p>
The row and column indexes start at 0, so the upper left cell has the index&nbsp;(0,&nbsp;0).
<p>
With 两个 参数 the dialog 对象 defined by <tt>statement</tt> 将 be placed in the single cell addresses by <tt>row</tt> and <tt>column</tt>.
With four 参数 the dialog 对象 将 span over 所有 cells from <tt>row</tt>/<tt>column</tt> to <tt>row2</tt>/<tt>column2</tt>.
<p>
默认情况下，a <tt>dlgCell</tt> 包含 <a href=#334>dlgHBoxLayout</a>，so if the cell 包含 more than one 对话框对象，they 将 be placed next to each 其它 horizontally.
<h2>例</h2>
<pre>
string Text;
dlgGridLayout {
  dlgCell(0, 0) dlgLabel("Cell 0,0");
  dlgCell(1, 2, 4, 7) dlgTextEdit(Text);
  }
</pre>


<a name=329>
<h1>dlgCheckBox</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    定义一个复选框。
<dt>
<b>语法</b>
<dd>
<tt>dlgCheckBox(string Text, int &amp;Checked) [ <i>statement</i> ]</tt>
</dl>
<b>另请参阅</b> <a href=#340>dlgRadioButton</a>，<a href=#333>dlgGroup</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgCheckBox</tt> 语句定义了 a check box with the 给定的 <tt>Text</tt>.
<p>
如果 <tt>Text</tt> 包含 an <tt>'&amp;'</tt>, the 字符 以下 the ampersand 将 变成热键, and 当 the 用户 hits <tt>Alt+hotkey</tt>, the checkbox 将 be toggled. To have an 实际的 <tt>'&amp;'</tt> 字符 in the text it has to be <a href=#358>escaped</a>.
<p>
<tt>dlgCheckBox</tt> is mainly used within a <a href=#333>dlgGroup</a>, but can also be used otherwise.<br>
All check boxes within the same dialog must have <b>不同的</b> <tt>Checked</tt> 变量!
<p>
如果用户检选了 <tt>dlgCheckBox</tt>，则关联的 <tt>Checked</tt> 变量设置为 <tt>1</tt>，否则设置为 <tt>0</tt>。<tt>Checked</tt> 的初始值定义了一个复选框是否初始化为选中。如果 <tt>Checked</tt> 不为 <tt>0</tt>，则复选框初始化为选中。
<p>
The 可选的 <tt>statement</tt> 被执行 每个 time the <tt>dlgCheckBox</tt> is toggled.
<h2>例</h2>
<pre>
int mirror = 0;
int rotate = 1;
int flip   = 0;
dlgGroup("Orientation") {
  dlgCheckBox("&amp;Mirror", mirror);
  dlgCheckBox("&amp;Rotate", rotate);
  dlgCheckBox("&amp;Flip", flip);
  }
</pre>


<a name=330>
<h1>dlgComboBox</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a 下拉列表框 selection field.
<dt>
<b>语法</b>
<dd>
<tt>dlgComboBox(string array[], int &amp;Selected) [ <i>statement</i> ]</tt>
</dl>
<b>另请参阅</b> <a href=#337>dlgListBox</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgComboBox</tt> 语句定义了 a 下拉列表框 selection field with the contents of the 给定的 <tt>array</tt>.
<p>
<tt>Selected</tt> reflects the index of the 所选的 下拉列表框 条目。第一个条目的索引为 <tt>0</tt>。
<p>
<tt>array</tt> 的每个元素定义了 the contents of one entry in the 下拉列表框. None of the 字符串 in <tt>array</tt> may be empty （如果存在空字串，所有字符串 after and including that one 将 be dropped).
<p>
可选的 <tt>statement</tt> 被执行 当ever the selection in the <tt>dlgComboBox</tt> 改变.<br>
在 <tt>statement</tt> 执行之前，所有变量 that have been used with 对话框对象 被更新ed to 它们的当前值，and 任何改变 made to 这些变量 inside the <tt>statement</tt> 将 be reflected in the dialog 当 the 语句返回.
<p>
如果初始值 of <tt>Selected</tt> is outside the 范围 of the <tt>array</tt> indexes, it is set to <tt>0</tt>.
<h2>例</h2>
<pre>
string Colors[] = { "red", "green", "blue", "yellow" };
int slected = 2; // initially selects "blue"
dlgComboBox(Colors, selected) dlgMessageBox("You have selected " + Colors[selected]);
</pre>


<a name=331>
<h1>dlgDialog</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    执行一用户语言对话框。
<dt>
<b>语法</b>
<dd>
<tt>int dlgDialog(string Title) <i>block</i> ;</tt>
<dt>
<b>返回</b>
<dd>
    <tt>dlgDialog</tt> 函数返回一个整数值 that can be 给定的 a 用户定义的 meaning through a call to the <tt><a href=#353>dlgAccept()</a></tt> 函数.<br>
如果对话框只是简单地关闭，则返回值为 <tt>-1</tt>。
</dl>
<b>另请参阅</b> <a href=#332>dlgGridLayout</a>，<a href=#334>dlgHBoxLayout</a>，<a href=#350>dlgVBoxLayout</a>，<a href=#353>dlgAccept</a>，<a href=#355>dlgReset</a>，<a href=#356>dlgReject</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgDialog</tt> 函数执行由 <tt><a href=#235>block</a></tt> 定义的对话框。This is the only dialog 对象 that actually 为用户语言内建的函数。Therefore it can be used anywhere where a 函数调用 is allowed.
<p>
<tt>block</tt> 一般只包含其它的<a href=#327>对话框对象</a>。不过也可以使用其它用户语言语句，例如 to conditionally add 对象 to the dialog（参见下面的第二个例子）。
<p>
默认情况下，a <tt>dlgDialog</tt> 包含 a <a href=#350>dlgVBoxLayout</a>, so a simple dialog 不比担心布局。
<p>
A <tt>dlgDialog</tt> should at some point 包含 a call to the <tt><a href=#353>dlgAccept()</a></tt> 函数 以便允许用户关闭对话框并接受它的内容。
<p>
如果 所有 you need 为simple message box 或 文件对话框 you might want to use one of the <a href=#323>预定义的对话框</a> instead.
<h2>例子</h2>
<pre>
int Result = dlgDialog("Hello") {
  dlgLabel("Hello world");
  dlgPushButton("+OK") dlgAccept();
  };
int haveButton = 1;
dlgDialog("Test") {
  dlgLabel("Start");
  if (haveButton)
     dlgPushButton("Here") dlgAccept();
  };
</pre>


<a name=332>
<h1>dlgGridLayout</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a 栅格布局语境.
<dt>
<b>语法</b>
<dd>
<tt>dlgGridLayout <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#328>dlgCell</a>，<a href=#334>dlgHBoxLayout</a>，<a href=#350>dlgVBoxLayout</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
    <tt>dlgGridLayout</tt> 语句 opens a 栅格布局语境.
<p>
The only dialog 对象 that can be used directly in <tt>statement</tt> is <a href=#328>dlgCell</a>, which 定义了 the 位置 of a 特定的 dialog 对象 within the grid layout.
<p>
The 行与列 indexes start at 0, so the upper left cell has the index&nbsp;(0,&nbsp;0).<br>
行数和列数 is 自动地扩展 依照 the 位置 of 对话框对象 that are defined within the 栅格布局语境，so you don't have to 明确地 定义 the number of rows and columns.
<h2>例</h2>
<pre>
dlgGridLayout {
  dlgCell(0, 0) dlgLabel("Row 0/Col 0");
  dlgCell(1, 0) dlgLabel("Row 1/Col 0");
  dlgCell(0, 1) dlgLabel("Row 0/Col 1");
  dlgCell(1, 1) dlgLabel("Row 1/Col 1");
  }
</pre>


<a name=333>
<h1>dlgGroup</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a 组 field.
<dt>
<b>语法</b>
<dd>
<tt>dlgGroup(string Title) <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#329>dlgCheckBox</a>，<a href=#340>dlgRadioButton</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgGroup</tt> 语句定义了 a 组 with the 给定的 <tt>标题</tt>.
<p>
默认情况下，a <tt>dlgGroup</tt> 包含 a <a href=#350>dlgVBoxLayout</a>, so a simple 组 不 have to worry about the layout.
<p>
<tt>dlgGroup</tt> is mainly used to 包含 a set of <a href=#340>radio 按钮</a> 或 <a href=#329>check boxes</a>, but may as well 包含 any 其它对象 in 它的 <tt>statement</tt>.<br>
Radio 按钮 within a <tt>dlgGroup</tt> are numbered starting with <tt>0</tt>.
<h2>例</h2>
<pre>
int align = 1;
dlgGroup("Alignment") {
  dlgRadioButton("&amp;Top", align);
  dlgRadioButton("&amp;Center", align);
  dlgRadioButton("&amp;Bottom", align);
  }
</pre>


<a name=334>
<h1>dlgHBoxLayout</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Opens a horizontal box layout 上下文.
<dt>
<b>语法</b>
<dd>
<tt>dlgHBoxLayout <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#332>dlgGridLayout</a>，<a href=#350>dlgVBoxLayout</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgHBoxLayout</tt> 语句 opens a horizontal box layout 上下文 for the 给定的 <tt>statement</tt>.
<h2>例</h2>
<pre>
dlgHBoxLayout {
  dlgLabel("Box 1");
  dlgLabel("Box 2");
  dlgLabel("Box 3");
  }
</pre>


<a name=335>
<h1>dlgIntEdit</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 an 整数 entry field.
<dt>
<b>语法</b>
<dd>
<tt>dlgIntEdit(int &amp;Value, int Min, int Max)</tt>
</dl>
<b>另请参阅</b> <a href=#341>dlgRealEdit</a>，<a href=#345>dlgStringEdit</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgIntEdit</tt> 语句定义了一个整数 entry field with the 给定的 <tt>Value</tt>.
<p>
如果 <tt>Value</tt> is initially <tt>Min</tt> 和 <tt>Max</tt> 定义的范围之外，则它将被限制到这些值。
<h2>例</h2>
<pre>
int Value = 42;
dlgHBoxLayout {
  dlgLabel("Enter a &amp;Number between 0 and 99");
  dlgIntEdit(Value, 0, 99);
  }
</pre>


<a name=336>
<h1>dlgLabel</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    定义文本标签。
<dt>
<b>语法</b>
<dd>
<tt>dlgLabel(string Text [, int Update])</tt>
</dl>
<b>另请参阅</b> <a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>，<a href=#354>dlgRedisplay()</a>
<p>
<tt>dlgLabel</tt> 语句用给定的 <tt>Text</tt> 定义标签。
<p>
<tt>Text</tt> can be either a string literal,比如 <tt>"Hello"</tt>, 或一字符串变量。
<p>
如果 <tt>Text</tt> 包含任何 HTML 标签，字符 '&lt;'、'&gt;' 及 '&amp;' 必须 be 给定的 as "&amp;lt;", "&amp;gt;" and "&amp;amp;", 分别, if they shall be displayed as such.
<p>
<tt>Text</tt> 中的外部超级链接 则可以用适当的应用程序打开。
<p>
如果 <tt>Update</tt> 参数不为 <tt>0</tt>，并且 <tt>Text</tt> 为字符串变量，它的内容 能被修改 in the <tt>statement</tt> of, e.g., a <a href=#339>dlgPushButton</a>, and the 标签将被自动地更新。This, of course, is only useful if <tt>Text</tt> 为dedicated string 变量 (not, e.g., the loop 变量 of a <tt>for</tt> 语句).
<p>
如果 <tt>Text</tt> 包含一个 <tt>'&amp;'</tt>, and the 对象 以下 the 标签 can have the 键盘 focus, the 字符 以下 the ampersand 将 变成热键，and 当用户按下<tt>Alt+hotkey</tt>，焦点会 go to the 对象 that was defined immediately 以下 the <tt>dlgLabel</tt>. To have an 实际的 <tt>'&amp;'</tt> 字符 in the text it has to be <a href=#358>escaped</a>.
<h2>例</h2>
<pre>
string OS = "Windows";
dlgHBoxLayout {
  dlgLabel(OS, 1);
  dlgPushButton("&amp;ChangeOS") { OS = "Linux"; }
  }
</pre>


<a name=337>
<h1>dlgListBox</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义一个列表框 selection field.
<dt>
<b>语法</b>
<dd>
<tt>dlgListBox(字符串数组[], int &amp;所选的) [ <i>statement</i> ]</tt>
</dl>
<b>另请参阅</b> <a href=#330>dlgComboBox</a>，<a href=#338>dlgListView</a>，<a href=#357>dlgSelectionChanged</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgListBox</tt> 语句定义了 a 列表框 selection field with the contents of the 给定的 <tt>array</tt>.
<p>
<tt>Selected</tt> reflects the index of the 所选的 列表框 entry。第一个条目的索引为 <tt>0</tt>。
<p>
每个 <tt>array</tt> 元素定义了列表框中一行的内容。<tt>array</tt> 中的字符串不得为空（如果存在空字串，所有字符串 after and including that one 将 be dropped).
<p>
可选的 <tt>statement</tt> 被执行 当ever the 用户 双击 on an entry of the <tt>dlgListBox</tt>（参见 <a href=#357>dlgSelectionChanged</a> 关于如何 have the <tt>statement</tt> called 当 only the selection in the list 改变 的信息）。<br>
在<tt>statement</tt>被执行之前，所有变量 that have been used with 对话框对象 are updated to 它们当前的值，and 任何改变 made to 这些变量 inside the <tt>statement</tt> 将 be reflected in the dialog 当 the 语句返回。
<p>
如果 <tt>Selected</tt> 的初始值在 <tt>array</tt> 索引的范围之外，no entry 将 be 所选的.
<h2>例</h2>
<pre>
string Colors[] = { "red", "green", "blue", "yellow" };
int selected = 2; // initially selects "blue"
dlgListBox(Colors, 所选的) dlgMessageBox("You have selected " + Colors[selected]);
</pre>


<a name=338>
<h1>dlgListView</h1>
<dl>
<dt>
<b>功能</b>
<dd>
    定义 a multi column list view selection field.
<dt>
<b>语法</b>
<dd>
<tt>dlgListView(string Headers, 字符串数组[], int &amp;所选的[, int &amp;Sort]) [ <i>statement</i> ]</tt>
</dl>
<b>另请参阅</b> <a href=#337>dlgListBox</a>，
<a href=#357>dlgSelectionChanged</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgListView</tt> 语句定义了 a multi column list view selection field with the contents of the 给定的 <tt>array</tt>.
<p>
<tt>Headers</tt> is the tab separated list of column headers.
<p>
<tt>Selected</tt> reflects the index of the 所选的 list view entry in the <tt>array</tt> (the sequence in which the entries are actually displayed may be 不同的, because the contents of a <tt>dlgListView</tt> can be sorted by the various columns)。第一个条目的索引为 <tt>0</tt>。<br>
如果 no 特定的 entry shall be initially 所选的, <tt>Selected</tt> 应该初始化为 <tt>-1</tt>。If it is set to <tt>-2</tt>, the 第一个 item 依照 the 当前的sort column is made current.
<p>
<tt>Sort</tt> 定义了 which column should be used to sort the list view。最左边的列 is numbered <tt>1</tt>。该参数的符号 定义了排序方向（正值 sort in ascending order). 如果 <tt>Sort</tt> is <tt>0</tt> or outside the valid number of columns, no sorting 将 be done. 返回值 of <tt>Sort</tt> reflects the column and sort mode 所选的 by the 用户 by clicking on the list column headers. 默认情况下，<tt>dlgListView</tt> sorts by the 第一个 column, in ascending order.
<p>
每个元素 of <tt>array</tt> 定义了 the contents of one line in the list view, and 必须包含 tab 分隔的值。If there are fewer values in an 元素 of <tt>array</tt> than there are entries in the <tt>Headers</tt> string the remaining fields 将 be empty. 如果 there are more values in an 元素 of <tt>array</tt> than there are entries in the <tt>Headers</tt> string the superfluous 元素s 将 be silently dropped. None of the 字符串 in <tt>array</tt> may be empty (if there is an 空字串, 所有 字符串 after and including that one 将 be dropped).
<p>
A list entry that 包含 line feeds (<tt>'\n'</tt>) 将 be displayed in several lines accordingly.
<p>
可选的 <tt>statement</tt> 被执行 whenever the 用户双击 on an entry of the <tt>dlgListView</tt>（参见 <a href=#357>dlgSelectionChanged</a> for 信息 on 如何 have the <tt>statement</tt> called 当 only the selection in the list 改变).<br>
在 <tt>statement</tt> 被执行之前，所有变量 that have been used with 对话框对象 are updated to their 当前的值，and any 改变 made to 这些 变量 inside the <tt>statement</tt> 将 be reflected in the dialog 当 the 语句 返回.
<p>
如果 初始 值 of <tt>Selected</tt> is outside the 范围 of the <tt>array</tt> indexes, no entry 将 be 所选的.
<p>
如果 <tt>Headers</tt> is an 空字串, the 第一个 元素 of the <tt>array</tt> is used as the header string. Consequently the index of the 第一个 entry is then <tt>1</tt>.
<p>
<tt>dlgListView</tt>的内容 can be sorted by any column by clicking on that column's header. Columns can also be swapped by "click&amp;dragging" a column header. 请注意 none of 这些 改变 将 have any effect on the contents of the <tt>array</tt>. 如果 contents shall be sorted alphanumerically a <tt>numeric string[]</tt> 数组 can be used.
<h2>例</h2>
<pre>
string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
int Selected = 0; // initially selects "red"
dlgListView("Name\t描述", Colors, Selected) dlgMessageBox("You have 所选的 " + Colors[所选的]);
</pre>


<a name=339>
<h1>dlgPushButton</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a push 按钮.
<dt>
<b>语法</b>
<dd>
<tt>dlgPushButton(string Text) <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#351>布局信息</a>，<a href=#352>对话框函数</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgPushButton</tt> 语句定义了 a push 按钮 with the 给定的 <tt>Text</tt>.
<p>
如果 <tt>Text</tt> 包含 an <tt>'&amp;'</tt>, the 字符 以下 the ampersand 将 变成热键, and 当 the 用户 hits <tt>Alt+hotkey</tt>, the 按钮 将 be 所选的. To have an 实际的 <tt>'&amp;'</tt> 字符 in the text it has to be <a href=#358>escaped</a>.
<p>
如果 <tt>Text</tt> starts with a <tt>'+'</tt> 字符, this 按钮 将 become the 缺省的 按钮, which 将 be 所选的 if the 用户 hits ENTER.<br>
如果 <tt>Text</tt> starts with a <tt>'-'</tt> 字符, this 按钮 将 become the cancel 按钮, which 将 be 所选的 if the 用户 closes the dialog.<br>
<b>CAUTION: Make sure that the <tt>statement</tt> of such a marked cancel 按钮 包含 a call to <a href=#356>dlgReject()</a>! 否则用户可能无法关闭对话框 at all!</b><br>
To have an 实际的 <tt>'+'</tt> 或 <tt>'-'</tt> 字符 as the 第一个 字符 of the text it has to be <a href=#358>escaped</a>.
<p>
如果用户选择了 <tt>dlgPushButton</tt>，则执行给定的 <tt>statement</tt>。<br>
在 <tt>statement</tt> 被执行之前，所有 变量 that have been used with 对话框对象 are updated to their 当前值，and any 改变 made to 这些 变量 inside the <tt>statement</tt> 将 be reflected in the dialog 当 the 语句 返回.
<h2>例</h2>
<pre>
int defaultWidth = 10;
int defaultHeight = 20;
int width = 5;
int height = 7;
dlgPushButton("&amp;Reset defaults") {
  width = defaultWidth;
  height = defaultHeight;
  }
dlgPushButton("+&amp;Accept") dlgAccept();
dlgPushButton("-Cancel") { if (dlgMessageBox("Are you sure?", "Yes", "No") == 0) dlgReject(); }
</pre>


<a name=340>
<h1>dlgRadioButton</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义一个单选按钮。
<dt>
<b>语法</b>
<dd>
<tt>dlgRadioButton(string Text, int &amp;所选的) [ <i>statement</i> ]</tt>
</dl>
<b>另请参阅</b> <a href=#329>dlgCheckBox</a>，<a href=#333>dlgGroup</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgRadioButton</tt> 语句定义了 a radio 按钮 with the 给定的 <tt>Text</tt>.
<p>
如果 <tt>Text</tt> 包含 an <tt>'&amp;'</tt>, the 字符 以下 the ampersand 将变成热键，and 当 the 用户 hits <tt>Alt+hotkey</tt>, the 按钮 将 be 所选的. To have an 实际的 <tt>'&amp;'</tt> 字符 in the text it has to be <a href=#358>escaped</a>.
<p>
<tt>dlgRadioButton</tt> 只能 be used within a <a href=#333>dlgGroup</a>.<br>
All radio 按钮 within the same 组 必须使用<b>相同的</b> <tt>Selected</tt> 变量!
<p>
如果 用户 选择s a <tt>dlgRadioButton</tt>, the index of that 按钮 within the <tt>dlgGroup</tt> is 存储在 the <tt>Selected</tt> 变量.<br>
初始值 of <tt>Selected</tt> 定义了 which radio 按钮 is 初始ly 所选的。If <tt>Selected</tt> is outside the valid 范围 for this 组, no radio 按钮 将 be 所选的. In order to get the correct radio 按钮 selection, <tt>Selected</tt> must be set <b>before</b> the 第一个 <tt>dlgRadioButton</tt> is defined, and must not be modified between adding subsequent radio 按钮. Otherwise it is undefined which (if any) radio 按钮 将 be 所选的.
<p>
The 可选的 <tt>statement</tt> 被执行 每个 time the <tt>dlgRadioButton</tt> is 所选的。
<h2>例</h2>
<pre>
int align = 1;
dlgGroup("Alignment") {
  dlgRadioButton("&amp;Top", align);
  dlgRadioButton("&amp;Center", align);
  dlgRadioButton("&amp;Bottom", align);
  }
</pre>


<a name=341>
<h1>dlgRealEdit</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a real entry field.
<dt>
<b>语法</b>
<dd>
<tt>dlgRealEdit(real &amp;Value, real Min, real Max)</tt>
</dl>
<b>另请参阅</b> <a href=#335>dlgIntEdit</a>，<a href=#345>dlgStringEdit</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgRealEdit</tt> 语句定义了 a real entry field with the 给定的 <tt>Value</tt>。
<p>
如果 <tt>Value</tt> is 初始ly outside the 范围 defined by <tt>Min</tt> and <tt>Max</tt> it 将被限制到这些值。
<h2>例</h2>
<pre>
real Value = 1.4142;
dlgHBoxLayout {
  dlgLabel("Enter a &amp;Number between 0 and 99");
  dlgRealEdit(Value, 0.0, 99.0);
  }
</pre>


<a name=342>
<h1>dlgSpacing</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在 box 布局语境中定义额外的空间。
<dt>
<b>语法</b>
<dd>
<tt>dlgSpacing(int Size)</tt>
</dl>
<b>另请参阅</b> <a href=#334>dlgHBoxLayout</a>，<a href=#350>dlgVBoxLayout</a>，<a href=#344>dlgStretch</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgSpacing</tt> 语句定义了额外的空间竖直或水平布局语境。
<p>
<tt>Size</tt> 定义了额外空间的像素数量。
<h2>例</h2>
<pre>
dlgVBoxLayout {
  dlgLabel("Label 1");
  dlgSpacing(40);
  dlgLabel("Label 2");
  }
</pre>


<a name=343>
<h1>dlgSpinBox</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a spin box selection field.
<dt>
<b>语法</b>
<dd>
<tt>dlgSpinBox(int &amp;Value, int Min, int Max)</tt>
</dl>
<b>另请参阅</b> <a href=#335>dlgIntEdit</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgSpinBox</tt> 语句定义了 a spin box entry field with the 给定的 <tt>Value</tt>.
<p>
如果 <tt>Value</tt> is initially 由 <tt>Min</tt> 和 <tt>Max</tt> 定义的范围之外，它将被限制到这些值。
<h2>例</h2>
<pre>
int Value = 42;
dlgHBoxLayout {
  dlgLabel("&amp;Select value");
  dlgSpinBox(Value, 0, 99);
  }
</pre>


<a name=344>
<h1>dlgStretch</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 an empty stretchable space in a box layout 上下文.
<dt>
<b>语法</b>
<dd>
<tt>dlgStretch(int Factor)</tt>
</dl>
<b>另请参阅</b> <a href=#334>dlgHBoxLayout</a>，<a href=#350>dlgVBoxLayout</a>，<a href=#342>dlgSpacing</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
语句 <tt>dlgStretch</tt> 定义了 an empty stretchable space in a 竖直或水平 box layout 上下文.
<p>
<tt>Factor</tt> 定义了 the stretch factor of the space.
<h2>例</h2>
<pre>
dlgHBoxLayout {
  dlgStretch(1);
  dlgPushButton("+OK")    { dlgAccept(); };
  dlgPushButton("Cancel") { dlgReject(); };
  }
</pre>


<a name=345>
<h1>dlgStringEdit</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a string entry field.
<dt>
<b>语法</b>
<dd>
<tt>dlgStringEdit(string &amp;Text[, string &amp;History[][, int Size]])</tt>
</dl>
<b>另请参阅</b> <a href=#341>dlgRealEdit</a>，<a href=#335>dlgIntEdit</a>，<a href=#348>dlgTextEdit</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
语句 <tt>dlgStringEdit</tt> 定义了 a one line text entry field with the 给定的 <tt>Text</tt>.
<p>
如果 <tt>History</tt> is 给定的, the 字符串 the 用户 has entered over time are stored in that 字符串数组. The entry field then has a 按钮 that allows the 用户 to 选择 from previously entered 字符串. 如果 a <tt>Size</tt> 大于 zero is 给定的, only at most that number of 字符串 are 存储在 the 数组. 如果 <tt>History</tt> 包含 data 当 the dialog is newly opened, that data 将 be used to initialize the history. The 最近输入的 用户 输入 is stored at index 0.<br>
None of the 字符串 in <tt>History</tt> may be empty (if there is an 空字串，所有字符串 after and including that one 将 be dropped).
<h2>例</h2>
<pre>
string Name = "Linus";
dlgHBoxLayout {
  dlgLabel("Enter &amp;Name");
  dlgStringEdit(Name);
  }
</pre>


<a name=346>
<h1>dlgTabPage</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a tab page.
<dt>
<b>语法</b>
<dd>
<tt>dlgTabPage(string Title) <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#347>dlgTabWidget</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgTabPage</tt> 语句定义了 a tab page with the 给定的 <tt>标题</tt> 包含
the 给定的 <tt>statement</tt>.
<p>
如果 <tt>标题</tt> 包含 an <tt>'&amp;'</tt>, the 字符 以下 the ampersand 将 变成热键, and 当 the 用户 hits <tt>Alt+hotkey</tt>, this tab page 将 be opened.
To have an 实际的 <tt>'&amp;'</tt> 字符 in the text it has to be <a href=#358>escaped</a>.
<p>
Tab pages 只能 be used within a <a href=#347>dlgTabWidget</a>.
<p>
默认情况下，a <tt>dlgTabPage</tt> 包含 a <a href=#350>dlgVBoxLayout</a>, so a simple tab page 不 have to worry about the layout.
<h2>例</h2>
<pre>
dlgTabWidget {
  dlgTabPage("Tab &amp;1") {
    dlgLabel("This is page 1");
    }
  dlgTabPage("Tab &amp;2") {
    dlgLabel("This is page 2");
    }
  }
</pre>


<a name=347>
<h1>dlgTabWidget</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a container for tab pages.
<dt>
<b>语法</b>
<dd>
<tt>dlgTabWidget <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#346>dlgTabPage</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
语句 <tt>dlgTabWidget</tt> 定义了一个容器 for a set of tab pages.
<p>
<tt>statement</tt> must be a sequence of 一个或多个 <a href=#346>dlgTabPage</a> 对象. There must be no 其它对话框对象 in this sequence.
<h2>例</h2>
<pre>
dlgTabWidget {
  dlgTabPage("Tab &amp;1") {
    dlgLabel("This is page 1");
    }
  dlgTabPage("Tab &amp;2") {
    dlgLabel("This is page 2");
    }
  }
</pre>


<a name=348>
<h1>dlgTextEdit</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a 多行文字 entry field.
<dt>
<b>语法</b>
<dd>
<tt>dlgTextEdit(string &amp;Text)</tt>
</dl>
<b>另请参阅</b> <a href=#345>dlgStringEdit</a>，<a href=#349>dlgTextView</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgTextEdit</tt> 语句定义了 a 多行文本 entry field with the 给定的 <tt>Text</tt>.
<p>
The lines in the <tt>Text</tt> have to be delimited by a 换行字符 (<tt>'\n'</tt>). Any 空白字符 字符 at the end of the lines contained in <tt>Text</tt> 将 be removed, and upon 返回 there 将 be no 空白字符 字符 at the end of the lines. 空行 at the end of the text 将 be removed entirely.
<h2>例</h2>
<pre>
string Text = "This is some text.\nLine 2\nLine 3";
dlgVBoxLayout {
  dlgLabel("&amp;Edit the text");
  dlgTextEdit(Text);
  }
</pre>


<a name=349>
<h1>dlgTextView</h1>
<dl>
<dt>
<b>功能</b>
<dd>
定义 a 多行文字 viewer field.
<dt>
<b>语法</b>
<dd>
<tt>dlgTextView(string Text)</tt><br>
<tt>dlgTextView(string Text, string &amp;Link) <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#348>dlgTextEdit</a>，<a href=#336>dlgLabel</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgTextView</tt> 语句定义了 a 多行文字 viewer field with the 给定的 <tt>Text</tt>.
<p>
The <tt>Text</tt> may 包含 <a href=#360>HTML</a> 标签。
<p>
外部超级链接 in the <tt>Text</tt> 将 be opened with the 适当的应用程序程序。
<p>
如果给定了 <tt>Link</tt>，并且 <tt>Text</tt> 包含超级链接, 那么每次用户点击超级链接都将执行 <tt>statement</tt>，with 值 of <tt>Link</tt> set to whatever the <tt>&lt;a href=...&gt;</tt> 标签 定义了 as 值 of <i>href</i>.
如果在 <tt>statement</tt> 执行之后，<tt>Link</tt> 变量不为空，the 缺省的 handling of 超级链接 将 take place. This is also the case if <tt>Link</tt> 包含 some text before dlgTextView is opened, which allows for an initial scrolling to a 给定的位置。如果给定了 <tt>Link</tt>，外部超级链接 将 not be opened.
<h2>例</h2>
<pre>
string Text = "This is some text.\nLine 2\nLine 3";
dlgVBoxLayout {
  dlgLabel("&amp;View the text");
  dlgTextView(Text);
  }
</pre>


<a name=350>
<h1>dlgVBoxLayout</h1>
<dl>
<dt>
<b>功能</b>
<dd>
开启 a vertical box layout 上下文.
<dt>
<b>语法</b>
<dd>
<tt>dlgVBoxLayout <i>statement</i></tt>
</dl>
<b>另请参阅</b> <a href=#332>dlgGridLayout</a>，<a href=#334>dlgHBoxLayout</a>，<a href=#351>布局信息</a>，<a href=#359>一个完整的例子</a>
<p>
语句 <tt>dlgVBoxLayout</tt>  opens a vertical box layout 上下文 for the 给定的 <tt>statement</tt>.
<p>
默认情况下，a <a href=#331>dlgDialog</a> 包含 a <tt>dlgVBoxLayout</tt>, so a simple dialog 不 have to worry about the layout.
<h2>例</h2>
<pre>
dlgVBoxLayout {
  dlgLabel("Box 1");
  dlgLabel("Box 2");
  dlgLabel("Box 3");
  }
</pre>


<a name=351>
<h1>布局信息</h1>
所有对象 within a 用户语言 Dialog a placed inside a <i>layout 上下文</i>.
<p>
Layout 上下文s can be either <a href=#332>grid</a>, <a href=#334>horizontal</a> 或 <a href=#350>vertical</a>。
<h2>栅格布局语境</h2>
对象 in a 栅格布局语境 must specify the grid 坐标 of the cell 或 cells into which they shall be placed. To place a text 标签 at row 5, column 2, you 将 write
<pre>
dlgGridLayout {
  dlgCell(5, 2) dlgLabel("Text");
  }
</pre>
如果 对象 shall span over more than one cell you need to specify the 坐标 of the starting cell and the ending cell. To place a 组 that extends from row 1, column 2 up to row 3, column 5, you 将 write
<pre>
dlgGridLayout {
  dlgCell(1, 2, 3, 5) dlgGroup("Title") {
    //...
    }
  }
</pre>
<h2>Horizontal Layout 上下文</h2>
对象 in a horizontal layout 上下文 are placed left to right.
<p>
The special 对象 <a href=#344>dlgStretch</a> and <a href=#342>dlgSpacing</a> 可以用于 further refine the distribution of the available space.
<p>
To 定义 两个 按钮 that are pushed 所有 the way to the right edge of the dialog, you 将 write
<pre>
dlgHBoxLayout {
  dlgStretch(1);
  dlgPushButton("+OK")    dlgAccept();
  dlgPushButton("Cancel") dlgReject();
  }
</pre>
<h2>Vertical Layout 上下文</h2>
对象 in a vertical layout 上下文 follow the same 规则 as 那些 in a horizontal layout 上下文, except that they are placed top to bottom.
<h2>Mixing Layout 上下文s</h2>
Vertical, horizontal and 栅格布局语境s can be mixed to 建立 the 期望的 layout structure of a dialog. See the <a href=#359>完整的例子</a> for a demonstration of this.


<a name=352>
<h1>Dialog 函数</h1>
The 以下 函数 can be used with 用户语言 Dialogs:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><a href=#353>dlgAccept()</a>  </td><td width=20><td>closes the dialog and accepts 它的 contents</td></tr>
<tr><td><a href=#354>dlgRedisplay()</a>  </td><td width=20><td>immediately re显示 the dialog after 改变 to any values</td></tr>
<tr><td><a href=#355>dlgReset()</a>  </td><td width=20><td>resets 所有 对话框对象 to their initial values</td></tr>
<tr><td><a href=#356>dlgReject()</a>  </td><td width=20><td>closes the dialog and rejects 它的 contents</td></tr>
<tr><td><a href=#357>dlgSelectionChanged()</a>  </td><td width=20><td>tells whether the 当前的selection in a dlgListView 或 dlgListBox has changed</td></tr>
</table>


<a name=353>
<h1>dlgAccept()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
关闭对话框并接受其内容。
<dt>
<b>语法</b>
<dd>
<tt>void dlgAccept([ <i>int Result</i> ]);</tt>
</dl>
<b>另请参阅</b> <a href=#356>dlgReject</a>，<a href=#331>dlgDialog</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgAccept</tt> 函数 causes the <a href=#331>dlgDialog</a> to be closed and 返回 after the 当前的语句 sequence has been completed.
<p>
Any 改变 the 用户 has made to the dialog values 将 be accepted and are copied into the 变量 that have been 给定的 当 the <a href=#327>对话框对象</a> were defined.
<p>
可选的 <tt>Result</tt> is 值 that 将 be 返回ed by the dialog. Typically this should be a positive 整数值. 如果 no 值 is 给定的, it defaults to <tt>1</tt>.
<p>
请注意 <tt>dlgAccept()</tt> does 返回 to the normal 程序执行, so in a sequence like
<pre>
dlgPushButton("OK") {
  dlgAccept();
  dlgMessageBox("Accepting!");
  }
</pre>
<tt>dlgAccept()</tt> 之后的语句仍将被执行！
<h2>例</h2>
<pre>
int Result = dlgDialog("Test") {
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               };
</pre>


<a name=354>
<h1>dlgRedisplay()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
在改变值之后，重新显示对话框。
<dt>
<b>语法</b>
<dd>
<tt>void dlgRedisplay(void);</tt>
</dl>
<b>另请参阅</b> <a href=#355>dlgReset</a>，<a href=#331>dlgDialog</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgRedisplay</tt> 函数 can be called to 立即刷新 the <a href=#331>dlgDialog</a> after 改变 have been made to the 变量 used 当 定义ing the <a href=#327>对话框对象</a>.
<p>
您只需要调用 <tt>dlgRedisplay()</tt> 如果您 want the dialog to be refreshed while still 执行程序代码。In the 例子 below the status is changed to "Running..." and <tt>dlgRedisplay()</tt> has to be called to make this change take effect before the "program action" is performed. After the final status 改变to "Finished." there is no need to call <tt>dlgRedisplay()</tt>, 因为 所有对话框对象 are 自动地更新 after leaving the 语句.
<h2>例</h2>
<pre>
string Status = "Idle";
int Result = dlgDialog("Test") {
               dlgLabel(Status, 1); // note the '1' to tell the label to be updated!
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               dlgPushButton("Run") {
                 Status = "Running...";
                 dlgRedisplay();
                 // some program action here...
                 Status = "Finished.";
                 }
               };
</pre>


<a name=355>
<h1>dlgReset()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
复位所有对话框对象为其初始值。
<dt>
<b>语法</b>
<dd>
<tt>void dlgReset(void);</tt>
</dl>
<b>另请参阅</b> <a href=#356>dlgReject</a>，<a href=#331>dlgDialog</a>，<a href=#359>一个完整的例子</a>
<p>
<tt>dlgReset</tt> 函数复制初始值 back into 所有 <a href=#327>对话框对象</a> of 当前 <a href=#331>dlgDialog</a>.
<p>
Any 改变 the 用户 has made to the dialog values 将 be discarded.
<p>
Calling <a href=#356><tt>dlgReject()</tt></a> implies a call to <tt>dlgReset()</tt>.
<h2>例</h2>
<pre>
int Number = 1;
int Result = dlgDialog("Test") {
               dlgIntEdit(Number);
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               dlgPushButton("Reset")  dlgReset();
               };
</pre>


<a name=356>
<h1>dlgReject()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
关闭对话框，并 rejects 它的内容。
<dt>
<b>语法</b>
<dd>
<tt>void dlgReject([ <i>int Result</i> ]);</tt>
</dl>
<b>另请参阅</b> <a href=#353>dlgAccept</a>，<a href=#355>dlgReset</a>，<a href=#331>dlgDialog</a>，<a href=#359>一个完整的例子</a>
<p>
The <tt>dlgReject</tt> 函数 causes the <a href=#331>dlgDialog</a> to be closed and 返回 after the 当前的语句 sequence has been completed.
<p>
Any 改变 the 用户 has made to the dialog values 将 be discarded. The 变量 that have been 给定的 当 the <a href=#327>对话框对象</a> were defined 将 be 复位到它们原始的 values 当 the dialog 返回.
<p>
可选的 <tt>Result</tt> 为将由对话框返回的值。Typically 它将为 <tt>0</tt> 或一负的整数值。如果没有给定值，默认为 <tt>0</tt>。
<p>
请注意 <tt>dlgReject()</tt> does 返回 to the normal 程序执行, so in a sequence like
<pre>
dlgPushButton("Cancel") {
  dlgReject();
  dlgMessageBox("Rejecting!");
  }
</pre>
<tt>dlgReject()</tt> 之后的语句仍将被执行！
<p>
Calling <tt>dlgReject()</tt> implies a call to <a href=#355><tt>dlgReset()</tt></a>.
<h2>例</h2>
<pre>
int Result = dlgDialog("Test") {
               dlgPushButton("+OK")    dlgAccept(42);
               dlgPushButton("Cancel") dlgReject();
               };
</pre>


<a name=357>
<h1>dlgSelectionChanged()</h1>
<dl>
<dt>
<b>功能</b>
<dd>
Tells whether the 当前的selection in a dlgListView 或 dlgListBox has changed.
<dt>
<b>语法</b>
<dd>
<tt>int dlgSelectionChanged(void);</tt>
<dt>
<b>返回</b>
<dd>
The <tt>dlgSelectionChanged</tt> 函数返回 a 非零值 if only the selection in the list has changed.
</dl>
<b>另请参阅</b> <a href=#338>dlgListView</a>，<a href=#337>dlgListBox</a>
<p>
The <tt>dlgSelectionChanged</tt> 函数 can be used in a list 上下文 to determine whether <tt>dlgListView</tt> 或 <tt>dlgListBox</tt> 的语句 was called because the 用户双击 on an item, 或 whether only the 当前的selection in the list has changed.
<p>
如果 语句 of a <tt>dlgListView</tt> 或 <tt>dlgListBox</tt> 不 包含 any call to <tt>dlgSelectionChanged</tt>, that 语句 is only executed 当 the 用户 double clicks on an item in the list. However, if a ULP needs to react on 改变 to the 当前的selection in the list, it can call <tt>dlgSelectionChanged</tt> within the list's 语句. This causes the 语句 to also be called if the current selection in the list 改变.
<p>
如果 a list item is initially 所选的 当 the dialog is opened and the list's 语句 包含 a call to <tt>dlgSelectionChanged</tt>, the 语句 被执行 with <tt>dlgSelectionChanged</tt> returning true 以便 indicate the initial change from "no selection" to an 实际的 selection. Any later programmatical 改变 to the 字符串 or the selection of the list 将 not trigger an automatic execution of the list's 语句. This is important to remember in case the 当前的list item controls another dialog 对象, 比如 a <tt>dlgTextView</tt> that shows an extended 呈现 of the 当前 所选的 item.
<h2>例</h2>
<pre>
string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
int 所选的 = 0; // initially selects "red"
string MyColor;
dlgLabel(MyColor, 1);
dlgListView("Name\t描述", Colors, selected) {
  if (dlgSelectionChanged())
     MyColor = Colors[所选的];
  else
     dlgMessageBox("You have chosen " + Colors[selected]);
  }
</pre>


<a name=358>
<h1>转义字符</h1>
在按钮或标签文字中，某些字符具有特殊的意义，所以它们需要被 <i>escaped</i> if they shall appear literally.
<p>
为此 you need to prepend the 字符 with a <i>反斜线</i>,比如
<pre>
dlgLabel("Miller \\&amp; Co.");
</pre>
This 将 result in "Miller &amp; Co." displayed in the dialog.
<p>
请注意 there are actually <b>two</b> 反斜线 字符 here, 因为 this line 将 第一个 go through the 用户语言解析器，which 将 strip the 第一个 反斜线.


<a name=359>
<h1>一个完整的例子</h1>
Here's 一个用户语言对话框的完整例子。
<pre>
int hor = 1;
int ver = 1;
string fileName;
int Result = dlgDialog("Enter 参数") {
  dlgHBoxLayout {
    dlgStretch(1);
    dlgLabel("This 为simple dialog");
    dlgStretch(1);
    }
  dlgHBoxLayout {
    dlgGroup("Horizontal") {
      dlgRadioButton("&amp;Top", hor);
      dlgRadioButton("&amp;Center", hor);
      dlgRadioButton("&amp;Bottom", hor);
      }
    dlgGroup("Vertical") {
      dlgRadioButton("&amp;Left", ver);
      dlgRadioButton("C&amp;enter", ver);
      dlgRadioButton("&amp;Right", ver);
      }
    }
  dlgHBoxLayout {
    dlgLabel("File &amp;name:");
    dlgStringEdit(fileName);
    dlgPushButton("Bro&amp;wse") {
      fileName = dlgFileOpen("Select a file", fileName);
      }
    }
  dlgGridLayout {
    dlgCell(0, 0) dlgLabel("Row 0/Col 0");
    dlgCell(1, 0) dlgLabel("Row 1/Col 0");
    dlgCell(0, 1) dlgLabel("Row 0/Col 1");
    dlgCell(1, 1) dlgLabel("Row 1/Col 1");
    }
  dlgSpacing(10);
  dlgHBoxLayout {
    dlgStretch(1);
    dlgPushButton("+OK")    dlgAccept();
    dlgPushButton("Cancel") dlgReject();
    }
  };
</pre>


<a name=360>
<h1>支持的 HTML 标签</h1>
EAGLE 支持标签的一个子集，用于格式化 HTML 页面。这可以用于格式化多个<a href=#322>用户语言对话框</a>对象的文字, in the <tt><a href=#150>#usage</a></tt> 指令 或 in the元件库对象的 <a href=#44>描述</a>。
<p>
如果第一行包含标签，则文字被认为是 HTML。如果情况不是这样，and you want the text to be formatted, you need to enclose the entire text in the <tt>&lt;html&gt;...&lt;/html&gt;</tt> 标签。
<p>
The 以下 table lists 所有 支持的 HTML 标签 and their available attributes:
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>Tag</b></td><td width=20><td><b>描述</b></td></tr>
<tr><td>&lt;html&gt;...&lt;/html&gt;</td><td width=20><td>An HTML 文档。</td></tr>
<tr><td>&lt;html&gt;...&lt;/html&gt;</td><td width=20><td>The body of an HTML 文档。It understands the 以下 属性
<ul>
<li><tt>bgcolor</tt> - 背景颜色，例如 <tt>bgcolor="yellow"</tt> 或 <tt>bgcolor="#0000FF"</tt>。该属性 works only within a <a href=#349>dlgTextView</a>.
</ul>
</td></tr>
<tr><td>&lt;h1&gt;...&lt;/h1&gt;</td><td width=20><td>A top-level heading.</td></tr>
<tr><td>&lt;h2&gt;...&lt;/h2&gt;</td><td width=20><td>A sub-level heading.</td></tr>
<tr><td>&lt;h3&gt;...&lt;/h3&gt;</td><td width=20><td>A sub-sub-level heading.</td></tr>
<tr><td>&lt;p&gt;...&lt;/p&gt;</td><td width=20><td>A left-aligned paragraph. 调整对齐 用 <tt>align</tt> 属性。可能的值为 <tt>left</tt>、<tt>right</tt> 和 <tt>center</tt>。</td></tr>
<tr><td>&lt;center&gt;...&lt;/center&gt;</td><td width=20><td>A centered paragraph.</td></tr>
<tr><td>&lt;blockquote&gt;...&lt;/blockquote&gt;</td><td width=20><td>An indented paragraph, useful for quotes.</td></tr>
<tr><td>&lt;ul&gt;...&lt;/ul&gt;</td><td width=20><td>An un-ordered list. 您也可以 pass a 类型参数 to 定义 the bullet 样式。默认为 <tt>type=disc</tt>,  其它类型为  <tt>circle</tt> and <tt>square</tt>.</td></tr>
<tr><td>&lt;ol&gt;...&lt;/ol&gt;</td><td width=20><td>An ordered list. 您也可以 pass a type 参数 to 定义 the enumeration 标签样式。默认为 <tt>type="1"</tt>, 其它类型为 <tt>"a"</tt> and <tt>"A"</tt>.</td></tr>
<tr><td>&lt;li&gt;...&lt;/li&gt;</td><td width=20><td>一个列表项。该标签只能 be used within the 上下文 of <tt>ol</tt> 或 <tt>ul</tt>.</td></tr>
<tr><td>&lt;pre&gt;...&lt;/pre&gt;</td><td width=20><td>For larger chunks of code. 内容中的空白字符被保留。对于小点的代码，用 inline-style <tt>code</tt>。</td></tr>
<tr><td>&lt;a&gt;...&lt;/a&gt;</td><td width=20><td>An anchor 或 link. It understands the 以下 attributes:
<ul>
<li><tt>href</tt> - The reference target as in <tt>&lt;a href="target.html"&gt;...&lt;/a&gt;</tt>. 您也可以 specify an additional anchor within the specified target document, 例如 <tt>&lt;a href="target.html#123"&gt;...&lt;/a&gt;</tt>. 如果 您想要 link to a local file that has a blank in 它的 name, you need to prepend the 文件名 with <tt>file:</tt>，比如 <tt>&lt;a href="file:/path with blanks/target.html"&gt;...&lt;/a&gt;</tt>.
<li><tt>name</tt> - The anchor name,比如 <tt>&lt;a name="123"&gt;...&lt;/a&gt;</tt>.
</ul>
</td></tr>
<tr><td>&lt;em&gt;...&lt;/em&gt;</td><td width=20><td>Emphasized (same as <tt>&lt;i&gt;...&lt;/i&gt;</tt>).</td></tr>
<tr><td>&lt;strong&gt;...&lt;/strong&gt;</td><td width=20><td>Strong (same as <tt>&lt;b&gt;...&lt;/b&gt;</tt>).</td></tr>
<tr><td>&lt;i&gt;...&lt;/i&gt;</td><td width=20><td>Italic 字体 style.</td></tr>
<tr><td>&lt;b&gt;...&lt;/b&gt;</td><td width=20><td>Bold 字体 style.</td></tr>
<tr><td>&lt;u&gt;...&lt;/u&gt;</td><td width=20><td>Underlined 字体 style.</td></tr>
<tr><td>&lt;big&gt;...&lt;/big&gt;</td><td width=20><td>A larger 字体 size.</td></tr>
<tr><td>&lt;small&gt;...&lt;/small&gt;</td><td width=20><td>A smaller 字体 size.</td></tr>
<tr><td>&lt;code&gt;...&lt;/code&gt;</td><td width=20><td>Indicates Code. (same as <tt>&lt;tt&gt;...&lt;/tt&gt;</tt>. For larger chunks of code, use the block-tag <tt>pre</tt>.</td></tr>
<tr><td>&lt;tt&gt;...&lt;/tt&gt;</td><td width=20><td>打字机字体样式。</td></tr>
<tr><td>&lt;font&gt;...&lt;/font&gt;</td><td width=20><td>定制字体大小，family and text color. The 标签 understands the 以下属性：
<ul>
<li><tt>color</tt> - 文字颜色，例如 <tt>color="red"</tt> 或 <tt>color="#FF0000"</tt>.
<li><tt>size</tt> - 字体的逻辑尺寸。逻辑尺寸 1 to 7 are supported. 值 may either be 绝对, 例如 <tt>size=3,</tt> 或 relative like <tt>size=-2</tt>. In the latter case, the sizes are simply added.
<li><tt>face</tt> - The family of the 字体, 例如 <tt>face=times</tt>.
</ul>
</td></tr>
<tr><td>&lt;img...&gt;</td><td width=20><td>An image. This 标签 understands the 以下 attributes:
<ul>
<li><tt>src</tt> - 图像名称，例如 <tt>&lt;img src="image.png"&gt;</tt>.<br>
图像的 URL 可以是外部的，比如 <tt>&lt;img src="http://www.cadsoft.de/cslogo.gif"&gt;</tt>.
<li><tt>width</tt> - 图像宽度。如果图像不适合指定的尺寸，它将被自动缩放。
<li><tt>height</tt> - 图像高度。
<li><tt>align</tt> - 决定图像被放在哪里。Per 缺省的, an image is placed inline, just like a normal 字符 Specify <tt>left</tt> 或 <tt>right</tt> to place the image at the 各自的 side.
</ul>
</td></tr>
<tr><td>&lt;hr&gt;</td><td width=20><td>水平横线。</td></tr>
<tr><td>&lt;br&gt;</td><td width=20><td>A line break.</td></tr>
<tr><td>&lt;nobr&gt;...&lt;/nobr&gt;</td><td width=20><td>No break. Prevents word wrap.</td></tr>
<tr><td>&lt;table&gt;...&lt;/table&gt;</td><td width=20><td>表的定义。默认的表格是无框的。Specify the boolean 属性 <tt>border</tt> 以便 get a frame. 其它attributes are:
<ul>
<li><tt>bgcolor</tt> - 背景色。
<li> <tt>width</tt> - 表格宽度。This is either 绝对 in pixels 或 relative in percent of the column width, 例如 <tt>width=80%</tt>.
<li> <tt>border</tt> - 表格边界宽度。默认为 0 （等于是无边框）。
<li> <tt>cellspacing</tt> - Additional space around the table cells. 默认为 2.
<li> <tt>cellpadding</tt> - Additional space around the contents of table cells. 缺省的 is 1.
</ul>
</td></tr>
<tr><td>&lt;tr&gt;...&lt;/tr&gt;</td><td width=20><td>A table row. 只能 be used within <tt>table</tt>. Understands the 属性
<ul>
<li><tt>bgcolor</tt> - 背景色。
</ul>
</td></tr>
<tr><td>&lt;td&gt;...&lt;/td&gt;</td><td width=20><td>A table data cell. 只能 be used within <tt>tr.</tt> Understands the 属性
<ul>
<li><tt>bgcolor</tt> - 背景色。
<li> <tt>width</tt> - 单元宽度。This is either 绝对 in pixels 或 relative in percent of the entire table width, 例如 <tt>width=50%</tt>.
<li> <tt>colspan</tt> - 定义多少列 this cell spans. 默认为 1.
<li> <tt>rowspan</tt> - 定义多少行 this cell spans. 默认为 1.
<li> <tt>align</tt> - Alignment, 可能的值为 <tt>left</tt>、<tt>right</tt> 以及 <tt>center</tt>。默认为左对齐。
</ul>
</td></tr>
<tr><td>&lt;th&gt;...&lt;/th&gt;</td><td width=20><td>A table header cell. Like <tt>td</tt> but defaults to center-alignment and a bold 字体.</td></tr>
<tr><td>&lt;author&gt;...&lt;/author&gt;</td><td width=20><td>Marks the author of this text.</td></tr>
<tr><td>&lt;dl&gt;...&lt;/dl&gt;</td><td width=20><td>A 定义 list.</td></tr>
<tr><td>&lt;dt&gt;...&lt;/dt&gt;</td><td width=20><td>A 定义 标签. 只能 be used within <tt>dl</tt>.</td></tr>
<tr><td>&lt;dd&gt;...&lt;/dd&gt;</td><td width=20><td>Definition data. 只能 be used within <tt>dl</tt>.</td></tr>
</table>
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>Tag</b></td><td width=20><td><b>Meaning</b></td></tr>
<tr><td>&amp;lt;</td><td width=20><td>&lt;</td></tr>
<tr><td>&amp;gt;</td><td width=20><td>&gt;</td></tr>
<tr><td>&amp;amp;</td><td width=20><td>&amp;</td></tr>
<tr><td>&amp;nbsp;</td><td width=20><td>non-breaking space</td></tr>
<tr><td>&amp;auml;</td><td width=20><td>&auml;</td></tr>
<tr><td>&amp;ouml;</td><td width=20><td>&ouml;</td></tr>
<tr><td>&amp;uuml;</td><td width=20><td>&uuml;</td></tr>
<tr><td>&amp;Auml;</td><td width=20><td>&Auml;</td></tr>
<tr><td>&amp;Ouml;</td><td width=20><td>&Ouml;</td></tr>
<tr><td>&amp;Uuml;</td><td width=20><td>&Uuml;</td></tr>
<tr><td>&amp;szlig;</td><td width=20><td>&szlig;</td></tr>
<tr><td>&amp;copy;</td><td width=20><td>&copy;</td></tr>
<tr><td>&amp;deg;</td><td width=20><td>&deg;</td></tr>
<tr><td>&amp;micro;</td><td width=20><td>&micro;</td></tr>
<tr><td>&amp;plusmn;</td><td width=20><td>&plusmn;</td></tr>
<tr><td>&amp;quot;</td><td width=20><td>&quot;</td></tr>
</table>


<a name=361>
<h1>自动备份</h1>
<h2>最大的 备份 level</h2>
The WRITE 命令 建立s 备份 copies of the saved 文件. 这些备份具有与原始文件相同的名，with a modified extension that follows the 模式
<pre>
.x#n
</pre>
In this 模式 <tt>'x'</tt> is replaced by the 字符
<p>
<tt>'b'</tt> 用于 PCB 文件<br>
<tt>'s'</tt> 用于原理图文件<br>
<tt>'l'</tt> 用于元件库文件
<p>
<tt>'n'</tt> stands for a 单个数字 in the 范围 1..9. Higher numbers indicate older 文件.
<p>
The fixed '#' 字符 makes it easy to 删除所有备份文件 from the 操作系统，using <b><tt>*.?#?</tt></b> as a 通配符.
<p>
请注意 备份 文件 with the same number 'n' 不必 represent 一致 组合s of PCB图和原理图文件！
<p>
The 最大的 number of 备份 copies can be set in the <a href=#15>备份对话框</a>。
<h2>自动备份间隔时间</h2>
如果 a 绘图 has been modified a safety 备份 copy 将 be 自动地 建立d after at most the 给定的 <i>自动备份间隔</i>。
<p>
This safety 备份 file 将 have a name that follows the 模式
<pre>
.x##
</pre>
In this 模式 <tt>'x'</tt> is replaced by the 字符
<p>
<tt>'b'</tt> for PCB 文件<br>
<tt>'s'</tt> for 原理图文件<br>
<tt>'l'</tt> for 元件库文件
<p>
正规的保存操作成功之后，将删除安全备份文件。如果绘图 has not been saved with the WRITE 命令 (e.g. due to a power failure) this file can be renamed and 载入的 as a normal board, 原理图 或 元件库 file, repectively.
<p>
自动备份间隔时间可以在<a href=#15>备份 dialog</a>中设置。


<a name=362>
<h1>正向&amp;反向编序</h1>
原理图和电路板文件是通过正向&amp;反向编序进行逻辑互连的。通常，关于正向&amp;反向编序没有需要特别考虑的。本节, however, 列出了 所有细节 关于 what exactly happens during 正/反向激活：
<ul>
<li>在向原理图添加一个新的元件时，元件的封装添加到电路板图绘图的左下角。如果元件包含供电引脚（pins with Direction "Pwr"），相应的焊盘将会被自动地练级到它们的电源信号。
<li>当从原理图绘图删除一个元件时，则元件的封装从电路板图删除。Any wires that 被连接到 that 封装 are left unchanged. This may require additional 过孔 to be set 一边保持信号的连接。这些过孔<b>不会被</b>自动地设置！The ratsnest 将被重新计算 for 那些信号 that 曾被连接到已移除的封装。
<li>当从电路板绘图删除一元件时，所有 of the 单元 contained in that part 将从原理图被删除。请注意，这可能影响多个图纸，if the 单元 were placed on 不同的图纸上！
<li>After an 操作 that 移除一个焊盘 从一个信号（或者把它添加到某个信号） that has a 多边形, the display of the 连接 to that 多边形 may be incorrect. In such a case the <a href=#83>RATSNEST</a> 命令 将重新计算多边形 to show the correct Thermal/Annulus 符号s. The same applies to Undo/Redo 操作s that involve 焊盘 连接ed 到 信号 with 多边形s.
<li>A PinSwap 或 GateSwap 操作 in the 原理图 将 make 所有 the necessary 改变 to the wires of the board。不过，在此操作之后 the wires may overlap 或违背 最小的 distance 规则。因此用户 should take a look at 这些 wires and modify them with Move, Split, 改变层 等等。
<li>To make 绝对ly sure that a PCB图和原理图 belong to 互相 (and are 因此通过正向&amp;反向编序连接）the 两个文件必须具有相同的文件名（带扩展名 .brd 和 .sch）并且位于同一目录！
<li>Replace 命令检查 whether 所有焊盘 in the 旧的封装 which have been assigned to 引脚 将 also be present in the 新的封装, regardless 他们是否连接到一个信号。
<li>当原理图中的两个零件的引脚 are directly overlapping (and thus 连接的 without a 可见的 net wire), a net wire 将 be 生成d 当 这些 parts are moved away from each other. This is done to avoid unnecessary ripup of 信号 wires 在电路板图中.
</ul>


<a name=363>
<h1>一致性检查</h1>
为了使用正向&amp;反向编序，PCB 图和原理图必须一致，which means they must 包含 an equivalent set of parts/元素s and 网络/信号。
<p>
通常，PCB 图和原理图 将 始终 be 一致 as long as they have never been edited separately (这种情况下， the 消息 <i>“不会执行正向&amp;反向编序”</i> 将 have warned you).
<p>
当 载入一对儿 PCB 图和原理图文件s the 程序将会检查数据文件中的一些一致性标记 markers to see if 这两个文件 are still 一致。如果这些 markers indicate an in一致性, you 将 be offered to run an <a href=#49>Electrical Rule Check</a> (ERC), which 将 do a detailed cross-check on both 文件.
<p>
如果 this check turns out positive, the 两个 文件 are marked as 一致 and 正向&amp;反向编序 将 be activated.
<p>
如果两个文件 are found to be 不一致 the ERC 协议文件 将 be brought up in a dialog and 正向&amp;反向编序 将<b>不会</b>被激活。
<p>
<b>请不要 be alarmed 如果您 get 大量的一致性消息。In most cases fixing one error（like renaming a 零件或网络）将 considerably 减少错误消息的数量 you get in the next ERC run.</b>
<h2>Making a PCB图和原理图 一致</h2>
To make an 不一致 pair of PCB图和原理图文件s 一致，您不得不手动修正任何 in一致性 listed in the ERC 协议。这可以由 完成 by applying 编辑器命令 like <a href=#70>NAME</a>，<a href=#105>VALUE</a>，<a href=#78>PINSWAP</a>，<a href=#88>REPLACE</a> 等等。在修正不一致之后，您必须使用 <a href=#49>ERC</a> 命令 again to check the 文件 and eventually activate 正向&amp;反向编序.
<h3>Note on Attributes:</h3>
Use <a href=#32>ATTRIBUTE</a> for creating 一致 名称和值 again. 如果re are 属性 that are 定义在元件库中，it might be helpful to 使用 <a href=#88>REPLACE</a> 命令以便替换 such 元件 并更新属性信息。
<h3>关于封装变体的注意事项：</h3>
Several approaches:
<ul>
<li>Use the <a href=#88>REPLACE</a> 命令 in the 布局编辑器以便 交换 the 封装 with a 定义 that 匹配 the 用在原理图中的封装。</li>
<li>Ex改变 of a whole device in the 原理图编辑器 with the <a href=#88>REPLACE</a> 命令 或 replacement of the 元件 with a 封装定义 used in the 布局编辑器。 Please take care on 属性, as well（参见 above).</li>
<li>改变the 封装变体, if any, with <a href=#36>CHANGE PACKAGE</a> in the 原理图编辑器.</li>
</ul>


<a name=364>
<h1>限制</h1>
在电路板中，当反向编序激活时（即：原理图 is 载入的, too)，以下动作是不允许的：
<ul>
<li>添加或复制包含 Pads 或 Smds 的零件
<li>删除鼠线
<li>用 Signal 定义连接
<li>pasting from a board into a board, if the 粘贴的对象 包含 parts with Pads 或 Smds, 或 Signals with 连接
</ul>
如果您试图进行上面的操作，您将收到一个消息，告诉您该操作无法被反向编序。这种情况下，请在原理图中进行必要的操作（they 将 then be 正向编序到电路板）。如果您非要在在电路板图中进行, 您可以关闭原理图窗口，然后在电路板中做你喜欢的任何事情。然而，那样的话，PCB 图和原理图将不再保持一致！


<a name=365>
<h1>技术支持</h1>
作为已注册的 EAGLE 用户，您可以从 CadSoft 获得免费技术支持。有几种方法可以联系我们，或者获得最新的元件库，驱动或程序版本（version）：
<p>
CadSoft Computer<br>
19620 Pines Blvd. Suite 217<br>
Pembroke Pines, FL 33029<br>
USA
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td>电话    </td><td width=20><td>954-237-0932</td></tr>
<tr><td>传真    </td><td width=20><td>954-237-0968</td></tr>
<tr><td>电子邮件    </td><td width=20><td><a href="mailto:support@cadsoftusa.com">support@cadsoftusa.com</a></td></tr>
<tr><td>网址      </td><td width=20><td><a href="http://www.cadsoftusa.com">www.cadsoftusa.com</a></td></tr>
</table>


<a name=366>
<h1>许可</h1>
为合法地使用 EAGLE，您需要一份已注册的用户许可。Please check whether the dialog "Help/About EAGLE" 包含您的名称和地址 under "已注册给："。如果您有任何疑问关于您的许可的有效性或真实性，请联系我们的<a href=#365>技术支持</a>团队进行验证。
<table><tr><td valign="top"><img src="platforms-mac.png"></td><td valign="middle"> Under <b>Mac OS X</b> 您可以 find this 信息 under "EAGLE/About EAGLE". </td></tr></table>
<p>
许可有不同的类型，varying in the number of users who may use the 程序 and in the areas of application the 程序 may be used in:
<h2>单用户许可</h2>
仅 <b>one</b> 用户 may 使用程序 at any 给定的 time。不过，用户可以在他的任何一台计算机上安装程序，只要他 he makes sure that the 程序将 only be used on one of 这些计算机 at a time.
<p>
这个类型的典型应用 将 be a 用户 who has a PC at home and also a 笔记本电脑或膝上型电脑 which he uses "on the road". As he 将 only use one of 这些计算机 at a time it is ok to have EAGLE installed on both of them.
<h2>多用户许可</h2>
A 多用户许可 may be used by 几个用户 (up to the 最大的 number listed on the license) 同时地。程序可以安装在任何数量的不同的计算机 at the 位置 of the license holder.
<h2>商业区可</h2>
程序可以用于任何用途，商业或私人。
<h2>教育许可</h2>
The 程序 may only be used in an 教育环境 like a school, 大学或培训班，以便教授如何使用 ECAD university 或 training workshop, 以便 teach 如何使用 ECAD 软件。
<h2>学生许可</h2>
程序可以仅用于私人（“非营利”）用途。学生版本以很低的价格销售，to 允许人们 who could otherwise never afford buying EAGLE the use of the 程序 for their 个人爱好或教育。如果您通过使用 EAGLE 的学生许可“赚钱”则将违背许可条款。


<a name=367>
<h1>EAGLE 许可</h1>
Before 您可以 work with EAGLE it is necessary to 注册 the 程序 with 您的 personalized license data.
<p>
在对话框“EAGLE 许可”中输入您的 EAGLE 许可文件名，as well as the 相应的 安装码 you have 获得d together with 您的许可文件 (this code 包含 10 小写字符).
<p>
在按下回车键或点击<b>确定</b>按钮之后，EAGLE 将 be installed with 您的 personalized license data.
<p>
如果您 have problems 安装 EAGLE 或 are in 怀疑您的许可的有效性，请联系我们的<a href=#365>技术支持</a>团队获得帮助。
<h2>安装额外的模块</h2>
如果您决定升级您的许可 with the 原理图/自动布线器模块 you get a new 许可文件 with a 新的安装代码。To make the new modules available，您必须再次注册 EAGLE。启动 EAGLE 程序 and choose in the <a href=#12>控制面板</a> in the Help 菜单 the item <i>EAGLE License</i>.


<a name=368>
<h1>EAGLE Editions</h1>
EAGLE is available in 三个不同的版本以满足不同的用户需求。
<h2>专业版</h2>
<i>专业版</i> 提供完整的功能：
<ul>
<li>电路板区域达 1600x1600mm (64x64inch)
<li>最多 16 个布线层
<li>每个原理图最多 999 图纸
</ul>
<h2>标准版</h2>
<i>标准版</i>有以下限制：
<ul>
<li>电路板区域限制为 160x100mm（6.3x4inch），相当于一个完整的欧洲标准卡（Eurocard）
<li>仅有六个布线层（Top, Route2, Route3, Route14, Route15 and Bottom）
<li>原理图最多包含 99 张 separate 图纸
</ul>
<h2>Light</h2>
<i>Light</i> edition has the 以下限制：
<ul>
<li>电路板区域限制为 100x80mm (4x3.2inch)，相当于欧洲标准卡（Eurocard）的一半
<li>仅有两个布线层（Top and Bottom）
<li>原理图只能有一个 single 图纸
</ul>
<h2>Freemium</h2>
<i>Freemium</i> 版 为<i>Free Premium</i> edition, which has 功能 在 <i>Light</i> 和 <i>Standard</i> 版本之间。The Freemium edition is available only after registration on <a href="http://www.element-14.com/eagle-freemium">http://www.element-14.com/eagle-freemium</a> 并有以下限制：
<ul>
<li>电路板区域限制为 100x80mm (4x3.2inch)，相当于欧洲标准卡（Eurocard）的一半
<li>只有四个布线层（Top, Route2, Route15 and Bottom）
<li>原理图只能包含四张图纸
<li>免费模式许可仅限于 one 单用户和计算机，并且需要 an 激活的连接 to 互联网 以便 work; 它在 60 天后过期
</ul>
<p>
如果您收到类似于下面的错误消息：
<p>
<i>The Light edition of EAGLE 不能执行请求的动作！</i>
<p>
这意味着您在试图 to do something that 将违背适用于所使用的 EAGLE 版本的限制，比如在允许的区域之外放置元素。
<p>
EAGLE 的所有版本都可以用于查看用 <i>标准</i> 或 <i>专业</i> 版本建立的文件，即使这些绘图超过了当前使用的版本的编辑能力。
<p>
To check which edition 您的许可 has enabled, 可以在控制面板的菜单里选择 <i>帮助/关于 EAGLE</i>。


<a name=369>
<h1>关于中文翻译</h1>
目前 EAGLE 的中文在线帮助由 <a href="mailto:huayuliang@gmail.com">DreamCat</a> 翻译维护，因内容较多但时间不充裕，而且本人翻译水平有限，关于翻译的任何问题、错误都希望能与我沟通，以便能及时更正。
<h2>一些单词的翻译对照</h2>
这些单词都是翻译中未能确定，或者可能有问题的，列在这里的目的是希望能有助于您的帮助。
<p>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td><b>原词</b></td><td width=20><td><b>翻译</b></td></tr>
<tr><td>board</td><td width=20><td>电路板，电路板图，本帮助中都有使用。</td></tr>
<tr><td>gate</td><td width=20><td>单元。原意是门，即逻辑电路中门电路的“门”，现在泛指集成电路中相同（最常见）或不同的几个部分</td></tr>
<tr><td>device</td><td width=20><td>元件、设备，两个词均有所用。这个手册中使用了多个近义词，实在让人头疼。</td></tr>
<tr><td>loop member</td><td width=20><td>循环成员，EAGLE中是在 ULP 中，用于循环遍历得到所有对象</td></tr>
<tr><td>上下文</td><td width=20><td>上下文，语境，涉及到 ULP 的翻译成语境。</td></tr>
 overwritten 覆写
subsequently 之后 随后
alternate grid  备用、替代的栅格 
 technologies 技术 工艺，这里为涵盖全部含义，译作：技术（工艺）
pattern 模式，search pattern 搜索模式
instance 实例，主要用于多单元元件的放置，意指一个单元。
上下文 上下文，语境。
device set 器件。
英语不好哇，汉语更差劲啊，明明清楚 version 和 edition 的区别，就是不知道怎么用汉语表述。囧死的汉语。
</table>
</body>
</html>
